Error: CLIPPY_WARNING: [#def1] crates/openshell-bootstrap/src/container_runtime.rs:6:5: warning: item in documentation is missing backticks # | # 6 | //! OpenShell supports both Docker and Podman as container runtimes. This module # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` # help: try # | # 6 - //! OpenShell supports both Docker and Podman as container runtimes. This module # 6 + //! `OpenShell` supports both Docker and Podman as container runtimes. This module # | Error: CLIPPY_WARNING: [#def2] crates/openshell-bootstrap/src/container_runtime.rs:85:1: warning: this `impl` can be derived # | # 85 | / impl Default for ContainerRuntime { # 86 | | fn default() -> Self { # 87 | | Self::Docker # 88 | | } # 89 | | } # | |_^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#derivable_impls # = note: `-W clippy::derivable-impls` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::derivable_impls)]` # help: replace the manual implementation with a derive attribute and mark the default variant # | # 34 + #[derive(Default)] # 35 | pub enum ContainerRuntime { # 36 ~ #[default] # 37 ~ Docker, # | Error: CLIPPY_WARNING: [#def3] crates/openshell-bootstrap/src/container_runtime.rs:185:5: warning: this `if` statement can be collapsed # | # 185 | / if let Ok(docker_host) = std::env::var("DOCKER_HOST") { # 186 | | if docker_host.starts_with("tcp://") || docker_host.starts_with("ssh://") { # 187 | | return true; # 188 | | } # 189 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # = note: `-W clippy::collapsible-if` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::collapsible_if)]` # help: collapse nested if block # | # 185 ~ if let Ok(docker_host) = std::env::var("DOCKER_HOST") # 186 ~ && (docker_host.starts_with("tcp://") || docker_host.starts_with("ssh://")) { # 187 | return true; # 188 ~ } # | Error: CLIPPY_WARNING: [#def4] crates/openshell-bootstrap/src/container_runtime.rs:265:5: warning: this `if` statement can be collapsed # | # 265 | / if let Ok(docker_host) = std::env::var("DOCKER_HOST") { # 266 | | if let Some(path) = docker_host.strip_prefix("unix://") { # 267 | | push_if_socket_exists(&mut found, path); # 268 | | } # 269 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 265 ~ if let Ok(docker_host) = std::env::var("DOCKER_HOST") # 266 ~ && let Some(path) = docker_host.strip_prefix("unix://") { # 267 | push_if_socket_exists(&mut found, path); # 268 ~ } # | Error: CLIPPY_WARNING: [#def5] crates/openshell-bootstrap/src/docker.rs:51:1: warning: pub(crate) function inside private module # | # 51 | pub(crate) fn resolve_gpu_device_ids( # | ----------^^^^^^^^^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate # = note: `-W clippy::redundant-pub-crate` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_pub_crate)]` Error: CLIPPY_WARNING: [#def6] crates/openshell-bootstrap/src/docker.rs:198:1: warning: pub(crate) function inside private module # | # 198 | pub(crate) fn connect_local(runtime: ContainerRuntime) -> Result<Docker> { # | ----------^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def7] crates/openshell-bootstrap/src/docker.rs:211:13: warning: this `if` statement can be collapsed # | # 211 | / if let Ok(host) = std::env::var("CONTAINER_HOST") { # 212 | | if let Some(path) = host.strip_prefix("unix://") { # 213 | | return Docker::connect_with_socket(path, 120, API_DEFAULT_VERSION).map_err( # 214 | | |err| { # ... | # 223 | | } # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 211 ~ if let Ok(host) = std::env::var("CONTAINER_HOST") # 212 ~ && let Some(path) = host.strip_prefix("unix://") { # 213 | return Docker::connect_with_socket(path, 120, API_DEFAULT_VERSION).map_err( # ... # 221 | ); # 222 ~ } # | Error: CLIPPY_WARNING: [#def8] crates/openshell-bootstrap/src/docker.rs:226:13: warning: this `if` statement can be collapsed # | # 226 | / if let Ok(host) = std::env::var("DOCKER_HOST") { # 227 | | if let Some(path) = host.strip_prefix("unix://") { # 228 | | return Docker::connect_with_socket(path, 120, API_DEFAULT_VERSION).map_err( # 229 | | |err| { # ... | # 238 | | } # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 226 ~ if let Ok(host) = std::env::var("DOCKER_HOST") # 227 ~ && let Some(path) = host.strip_prefix("unix://") { # 228 | return Docker::connect_with_socket(path, 120, API_DEFAULT_VERSION).map_err( # ... # 236 | ); # 237 ~ } # | Error: CLIPPY_WARNING: [#def9] crates/openshell-bootstrap/src/docker.rs:287:24: warning: variables can be used directly in the `format!` string # | # 287 | hints.push(format!( # | ________________________^ # 288 | | "No container runtime socket found and {} is not set.", # 289 | | host_env # 290 | | )); # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#uninlined_format_args # = note: `-W clippy::uninlined-format-args` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::uninlined_format_args)]` Error: CLIPPY_WARNING: [#def10] crates/openshell-bootstrap/src/docker.rs:313:19: warning: called `unwrap` on `env_val` after checking its variant with `is_none` # | # 283 | if env_val.is_none() { # | -------------------- help: try: `if let Some(<item>) = env_val` # ... # 313 | let val = env_val.unwrap(); # | ^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#unnecessary_unwrap # = note: `-W clippy::unnecessary-unwrap` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::unnecessary_unwrap)]` Error: CLIPPY_WARNING: [#def11] crates/openshell-bootstrap/src/docker.rs:403:44: warning: this `map_or` can be simplified # | # 403 | .filter(|c| is_gateway_image(c) && port.map_or(true, |p| has_port(c, p))) # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#unnecessary_map_or # = note: `-W clippy::unnecessary-map-or` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::unnecessary_map_or)]` # help: use is_none_or instead # | # 403 - .filter(|c| is_gateway_image(c) && port.map_or(true, |p| has_port(c, p))) # 403 + .filter(|c| is_gateway_image(c) && port.is_none_or(|p| has_port(c, p))) # | Error: CLIPPY_WARNING: [#def12] crates/openshell-bootstrap/src/docker.rs:409:24: warning: use Option::map_or_else instead of an if let/else # | # 409 | let hint = if let Some(p) = port { # | ________________________^ # 410 | | format!( # 411 | | "No openshell gateway container found listening on port {p}.\n\ # 412 | | Is the gateway running? Check with: docker ps (or podman ps)" # ... | # 417 | | .to_string() # 418 | | }; # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # = note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::option_if_let_else)]` # help: try # | # 409 ~ let hint = port.map_or_else(|| "No openshell gateway container found.\n\ # 410 + Is the gateway running? Check with: docker ps (or podman ps)" # 411 + .to_string(), |p| format!( # 412 + "No openshell gateway container found listening on port {p}.\n\ # 413 + Is the gateway running? Check with: docker ps (or podman ps)" # 414 ~ )); # | Error: CLIPPY_WARNING: [#def13] crates/openshell-bootstrap/src/docker.rs:545:1: warning: this function has too many arguments (12/7) # | # 545 | / pub async fn ensure_container( # 546 | | docker: &Docker, # 547 | | name: &str, # 548 | | image_ref: &str, # ... | # 557 | | runtime: ContainerRuntime, # 558 | | ) -> Result<u16> { # | |________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#too_many_arguments # = note: `-W clippy::too-many-arguments` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::too_many_arguments)]` Error: CLIPPY_WARNING: [#def14] crates/openshell-bootstrap/src/docker.rs:925:13: warning: this `if` statement can be collapsed # | # 925 | / if let Some(public) = port.public_port { # 926 | | if needed_ports.contains(&public) { # 927 | | let cname = names # 928 | | .first() # ... | # 941 | | } # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 925 ~ if let Some(public) = port.public_port # 926 ~ && needed_ports.contains(&public) { # 927 | let cname = names # ... # 939 | }); # 940 ~ } # | Error: CLIPPY_WARNING: [#def15] crates/openshell-bootstrap/src/docker.rs:927:33: warning: called `map(<f>).unwrap_or_else(<g>)` on an `Option` value # | # 927 | let cname = names # | _________________________________^ # 928 | | .first() # 929 | | .map(|n| n.trim_start_matches('/').to_string()) # 930 | | .unwrap_or_else(|| { # ... | # 934 | | .unwrap_or_else(|| "<unknown>".to_string()) # 935 | | }); # | |__________________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#map_unwrap_or # = note: `-W clippy::map-unwrap-or` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::map_unwrap_or)]` # help: try # | # 927 ~ let cname = names # 928 + .first().map_or_else(|| { # 929 + container # 930 + .id # 931 + .clone() # 932 + .unwrap_or_else(|| "<unknown>".to_string()) # 933 ~ }, |n| n.trim_start_matches('/').to_string()); # | Error: CLIPPY_WARNING: [#def16] crates/openshell-bootstrap/src/lib.rs:123:31: warning: item in documentation is missing backticks # | # 123 | /// - `[cdi-ids…]` — CDI DeviceRequest with the given device IDs # | ^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 123 - /// - `[cdi-ids…]` — CDI DeviceRequest with the given device IDs # 123 + /// - `[cdi-ids…]` — CDI `DeviceRequest` with the given device IDs # | Error: CLIPPY_WARNING: [#def17] crates/openshell-bootstrap/src/lib.rs:353:5: warning: all if blocks contain the same code at the start # | # 353 | / if remote_opts.is_some() { # 354 | | log("[status] Downloading gateway".to_string()); # | |________________________________________________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#branches_sharing_code # = note: `-W clippy::branches-sharing-code` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::branches_sharing_code)]` # help: consider moving these statements before the if # | # 353 ~ log("[status] Downloading gateway".to_string()); # 354 + if remote_opts.is_some() { # | Error: CLIPPY_WARNING: [#def18] crates/openshell-bootstrap/src/lib.rs:747:1: warning: first doc comment paragraph is too long # | # 747 | / /// Fetch the last `n` lines of container logs for a local gateway as a # 748 | | /// `String`. This is a convenience wrapper for diagnostic call sites (e.g. # 749 | | /// failure diagnosis in the CLI) that do not hold a Docker client handle. # 750 | | /// # 751 | | /// Returns an empty string on any Docker/connection error so callers don't # | |_^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#too_long_first_doc_paragraph # = note: `-W clippy::too-long-first-doc-paragraph` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::too_long_first_doc_paragraph)]` Error: CLIPPY_WARNING: [#def19] crates/openshell-bootstrap/src/lib.rs:754:5: warning: this could be rewritten as `let...else` # | # 754 | / let docker = match Docker::connect_with_local_defaults() { # 755 | | Ok(d) => d, # 756 | | Err(_) => return String::new(), # 757 | | }; # | |______^ help: consider writing: `let Ok(docker) = Docker::connect_with_local_defaults() else { return String::new() };` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#manual_let_else # = note: `-W clippy::manual-let-else` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_let_else)]` Error: CLIPPY_WARNING: [#def20] crates/openshell-bootstrap/src/metadata.rs:320:5: warning: this `if` statement can be collapsed # | # 320 | / if let Some(current) = load_last_sandbox(gateway) { # 321 | | if current == sandbox { # 322 | | if let Ok(path) = last_sandbox_path(gateway) { # 323 | | let _ = std::fs::remove_file(path); # ... | # 326 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 320 ~ if let Some(current) = load_last_sandbox(gateway) # 321 ~ && current == sandbox { # 322 | if let Ok(path) = last_sandbox_path(gateway) { # 323 | let _ = std::fs::remove_file(path); # 324 | } # 325 ~ } # | Error: CLIPPY_WARNING: [#def21] crates/openshell-bootstrap/src/metadata.rs:321:9: warning: this `if` statement can be collapsed # | # 321 | / if current == sandbox { # 322 | | if let Ok(path) = last_sandbox_path(gateway) { # 323 | | let _ = std::fs::remove_file(path); # 324 | | } # 325 | | } # | |_________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 321 ~ if current == sandbox # 322 ~ && let Ok(path) = last_sandbox_path(gateway) { # 323 | let _ = std::fs::remove_file(path); # 324 ~ } # | Error: CLIPPY_WARNING: [#def22] crates/openshell-cli/src/auth.rs:75:19: warning: casting `u64` to `usize` may truncate the value on targets with 32-bit wide pointers # | # 75 | let idx = (hash_b as usize) % charset.len(); # | ^^^^^^^^^^^^^^^^^ # | # = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_possible_truncation # = note: `-W clippy::cast-possible-truncation` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_possible_truncation)]` # help: ... or use `try_from` and handle the error accordingly # | # 75 - let idx = (hash_b as usize) % charset.len(); # 75 + let idx = usize::try_from(hash_b) % charset.len(); # | Error: CLIPPY_WARNING: [#def23] crates/openshell-cli/src/auth.rs:131:41: warning: used underscore-prefixed binding # | # 131 | std::io::stdin().read_line(&mut _input).ok(); # | ^^^^^^ # | # note: binding is defined here # --> crates/openshell-cli/src/auth.rs:130:13 # | # 130 | let mut _input = String::new(); # | ^^^^^^^^^^ # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#used_underscore_binding # = note: `-W clippy::used-underscore-binding` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::used_underscore_binding)]` Error: CLIPPY_WARNING: [#def24] crates/openshell-cli/src/bootstrap.rs:104:8: warning: this pattern matching can be expressed using equality # | # 104 | if let Some(false) = override_value { # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `override_value == Some(false)` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#equatable_if_let # = note: `-W clippy::equatable-if-let` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::equatable_if_let)]` Error: CLIPPY_WARNING: [#def25] crates/openshell-cli/src/main.rs:823:27: warning: item in documentation is missing backticks # | # 823 | /// When enabled, OpenShell auto-selects CDI when the Docker daemon has # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` # help: try # | # 823 - /// When enabled, OpenShell auto-selects CDI when the Docker daemon has # 823 + /// When enabled, `OpenShell` auto-selects CDI when the Docker daemon has # | Error: CLIPPY_WARNING: [#def26] crates/openshell-cli/src/main.rs:1158:22: warning: item in documentation is missing backticks # | # 1158 | /// Accepts [bind_address:]port (e.g. 8080, 0.0.0.0:8080). Keeps the sandbox alive. # | ^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 1158 - /// Accepts [bind_address:]port (e.g. 8080, 0.0.0.0:8080). Keeps the sandbox alive. # 1158 + /// Accepts [`bind_address`:]port (e.g. 8080, 0.0.0.0:8080). Keeps the sandbox alive. # | Error: CLIPPY_WARNING: [#def27] crates/openshell-cli/src/main.rs:1515:31: warning: item in documentation is missing backticks # | # 1515 | /// Port to forward: [bind_address:]port (e.g. 8080, 0.0.0.0:8080). # | ^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 1515 - /// Port to forward: [bind_address:]port (e.g. 8080, 0.0.0.0:8080). # 1515 + /// Port to forward: [`bind_address`:]port (e.g. 8080, 0.0.0.0:8080). # | Error: CLIPPY_WARNING: [#def28] crates/openshell-cli/src/main.rs:1543:1: warning: async block generated by this macro may allocate a lot of stack space # | # 1543 | #[tokio::main] # | ^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#large_stack_frames # = note: `-W clippy::large-stack-frames` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::large_stack_frames)]` Error: CLIPPY_WARNING: [#def29] crates/openshell-cli/src/main.rs:1596:17: warning: large future with a size of 16776 bytes # | # 1596 | / run::gateway_admin_deploy( # 1597 | | &name, # 1598 | | remote.as_deref(), # 1599 | | ssh_key.as_deref(), # ... | # 1608 | | cli.container_runtime.as_deref(), # 1609 | | ) # | |_________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#large_futures # = note: `-W clippy::large-futures` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::large_futures)]` # help: consider `Box::pin` on it # | # 1596 ~ Box::pin(run::gateway_admin_deploy( # 1597 + &name, # 1598 + remote.as_deref(), # 1599 + ssh_key.as_deref(), # 1600 + port, # 1601 + gateway_host.as_deref(), # 1602 + recreate, # 1603 + plaintext, # 1604 + disable_gateway_auth, # 1605 + registry_username.as_deref(), # 1606 + registry_token.as_deref(), # 1607 + gpu, # 1608 + cli.container_runtime.as_deref(), # 1609 + )) # | Error: CLIPPY_WARNING: [#def30] crates/openshell-cli/src/main.rs:1750:29: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 1750 | None => match run::find_forward_by_port(port)? { # | _____________________________^ # 1751 | | Some(n) => { # 1752 | | eprintln!("→ Found forward on sandbox '{n}'"); # 1753 | | n # ... | # 1759 | | }, # | |_____________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # = note: `-W clippy::single-match-else` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]` # help: try # | # 1750 ~ None => if let Some(n) = run::find_forward_by_port(port)? { # 1751 ~ eprintln!("→ Found forward on sandbox '{n}'"); # 1752 + n # 1753 + } else { # 1754 + eprintln!("{} No active forward found for port {port}", "!".yellow(),); # 1755 + return Ok(()); # 1756 ~ }, # | Error: CLIPPY_WARNING: [#def31] crates/openshell-cli/src/run.rs:345:14: warning: this parameter is a mutable reference but is not used mutably # | # 345 | fn clear(&mut self) { # | ^----^^^^ # | | # | help: consider removing this `mut` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#needless_pass_by_ref_mut # = note: `-W clippy::needless-pass-by-ref-mut` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::needless_pass_by_ref_mut)]` Error: CLIPPY_WARNING: [#def32] crates/openshell-cli/src/run.rs:389:29: warning: casting `u64` to `f64` may cause a loss of precision (`u64` is 64 bits wide, but `f64`'s mantissa is only 52 bits wide) # | # 389 | format!("{:.1} GB", bytes as f64 / GB as f64) # | ^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_precision_loss # = note: `-W clippy::cast-precision-loss` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_precision_loss)]` Error: CLIPPY_WARNING: [#def33] crates/openshell-cli/src/run.rs:389:44: warning: casting `u64` to `f64` may cause a loss of precision (`u64` is 64 bits wide, but `f64`'s mantissa is only 52 bits wide) # | # 389 | format!("{:.1} GB", bytes as f64 / GB as f64) # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_precision_loss Error: CLIPPY_WARNING: [#def34] crates/openshell-cli/src/run.rs:395:9: warning: variables can be used directly in the `format!` string # | # 395 | format!("{} B", bytes) # | ^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#uninlined_format_args # = note: `-W clippy::uninlined-format-args` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::uninlined_format_args)]` # help: change this to # | # 395 - format!("{} B", bytes) # 395 + format!("{bytes} B") # | Error: CLIPPY_WARNING: [#def35] crates/openshell-cli/src/run.rs:624:19: warning: use Option::map_or_else instead of an if let/else # | # 624 | let msg = if let Some(detail) = &self.progress { # | ___________________^ # 625 | | format!("{} ({})", self.status, detail.dimmed()) # 626 | | } else { # 627 | | self.status.clone() # 628 | | }; # | |_________^ help: try: `self.progress.as_ref().map_or_else(|| self.status.clone(), |detail| format!("{} ({})", self.status, detail.dimmed()))` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # = note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::option_if_let_else)]` Error: CLIPPY_WARNING: [#def36] crates/openshell-cli/src/run.rs:991:28: warning: use Option::map_or_else instead of an if let/else # | # 991 | let detected_runtime = match openshell_bootstrap::detect_runtime(None) { # | ____________________________^ # 992 | | Ok(rt) => rt, # 993 | | Err(_) => { # 994 | | tracing::warn!( # ... | # 999 | | }; # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # help: try # | # 991 ~ let detected_runtime = openshell_bootstrap::detect_runtime(None).map_or_else(|_| { # 992 + tracing::warn!( # 993 + "no container runtime detected, defaulting to Docker for gateway metadata" # 994 + ); # 995 + openshell_bootstrap::ContainerRuntime::default() # 996 ~ }, |rt| rt); # | Error: CLIPPY_WARNING: [#def37] crates/openshell-cli/src/run.rs:991:28: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 991 | let detected_runtime = match openshell_bootstrap::detect_runtime(None) { # | ____________________________^ # 992 | | Ok(rt) => rt, # 993 | | Err(_) => { # 994 | | tracing::warn!( # ... | # 999 | | }; # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # = note: `-W clippy::single-match-else` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]` # help: try # | # 991 ~ let detected_runtime = if let Ok(rt) = openshell_bootstrap::detect_runtime(None) { rt } else { # 992 + tracing::warn!( # 993 + "no container runtime detected, defaulting to Docker for gateway metadata" # 994 + ); # 995 + openshell_bootstrap::ContainerRuntime::default() # 996 ~ }; # | Error: CLIPPY_WARNING: [#def38] crates/openshell-cli/src/run.rs:1020:44: warning: use Option::map_or instead of an if let/else # | # 1020 | let (remote_host, resolved_host) = if let Some(dest) = remote { # | ____________________________________________^ # 1021 | | let ssh_host = extract_host_from_ssh_destination(dest); # 1022 | | let resolved = resolve_ssh_hostname(&ssh_host); # 1023 | | (Some(dest.to_string()), Some(resolved)) # 1024 | | } else { # 1025 | | (None, None) # 1026 | | }; # | |_________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # help: try # | # 1020 ~ let (remote_host, resolved_host) = remote.map_or((None, None), |dest| { # 1021 + let ssh_host = extract_host_from_ssh_destination(dest); # 1022 + let resolved = resolve_ssh_hostname(&ssh_host); # 1023 + (Some(dest.to_string()), Some(resolved)) # 1024 ~ }); # | Error: CLIPPY_WARNING: [#def39] crates/openshell-cli/src/run.rs:1362:1: warning: this function has too many arguments (12/7) # | # 1362 | / pub async fn gateway_admin_deploy( # 1363 | | name: &str, # 1364 | | remote: Option<&str>, # 1365 | | ssh_key: Option<&str>, # ... | # 1374 | | container_runtime: Option<&str>, # 1375 | | ) -> Result<()> { # | |_______________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#too_many_arguments # = note: `-W clippy::too-many-arguments` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::too_many_arguments)]` Error: CLIPPY_WARNING: [#def40] crates/openshell-cli/src/run.rs:1389:5: warning: this `if` statement can be collapsed # | # 1389 | / if !recreate { # 1390 | | if let Some(existing) = # 1391 | | openshell_bootstrap::check_existing_deployment(name, remote_opts.as_ref()).await? # ... | # 1401 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # = note: `-W clippy::collapsible-if` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::collapsible_if)]` # help: collapse nested if block # | # 1389 ~ if !recreate # 1390 ~ && let Some(existing) = # 1391 | openshell_bootstrap::check_existing_deployment(name, remote_opts.as_ref()).await? # ... # 1399 | } # 1400 ~ } # | Error: CLIPPY_WARNING: [#def41] crates/openshell-cli/src/run.rs:1390:9: warning: this `if` statement can be collapsed # | # 1390 | / if let Some(existing) = # 1391 | | openshell_bootstrap::check_existing_deployment(name, remote_opts.as_ref()).await? # 1392 | | { # 1393 | | if existing.container_running { # ... | # 1400 | | } # | |_________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 1391 ~ openshell_bootstrap::check_existing_deployment(name, remote_opts.as_ref()).await? # 1392 ~ && existing.container_running { # 1393 | eprintln!( # ... # 1397 | return Ok(()); # 1398 ~ } # | Error: CLIPPY_WARNING: [#def42] crates/openshell-cli/src/run.rs:1408:27: warning: unnecessary boolean `not` operation # | # 1408 | let stored_metadata = if !recreate { # | ___________________________^ # 1409 | | openshell_bootstrap::load_gateway_metadata(name).ok() # 1410 | | } else { # 1411 | | None # 1412 | | }; # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#if_not_else # = note: `-W clippy::if-not-else` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::if_not_else)]` # help: try # | # 1408 ~ let stored_metadata = if recreate { # 1409 + None # 1410 + } else { # 1411 + openshell_bootstrap::load_gateway_metadata(name).ok() # 1412 ~ }; # | Error: CLIPPY_WARNING: [#def43] crates/openshell-cli/src/run.rs:1637:6: warning: future cannot be sent between threads safely # | # 1637 | ) -> Result<()> { # | ^^^^^^^^^^ # | # = note: `std::sync::ReentrantLockGuard<'_, std::cell::RefCell<std::io::LineWriter<std::io::stdio::StdoutRaw>>>` doesn't implement `std::marker::Send` # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#future_not_send # = note: `-W clippy::future-not-send` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::future_not_send)]` Error: CLIPPY_WARNING: [#def44] crates/openshell-cli/src/run.rs:1639:23: warning: use Option::map_or_else instead of an if let/else # | # 1639 | let remote_opts = if let Some(dest) = remote { # | _______________________^ # 1640 | | let mut opts = RemoteOptions::new(dest); # 1641 | | if let Some(key) = ssh_key { # 1642 | | opts = opts.with_ssh_key(key); # ... | # 1655 | | None # 1656 | | }; # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # help: try # | # 1639 ~ let remote_opts = remote.map_or_else(|| if let Some(metadata) = get_gateway_metadata(name) # 1640 + && metadata.is_remote # 1641 + && let Some(ref host) = metadata.remote_host # 1642 + { # 1643 + let mut opts = RemoteOptions::new(host.clone()); # 1644 + if let Some(key) = ssh_key { # 1645 + opts = opts.with_ssh_key(key); # 1646 + } # 1647 + Some(opts) # 1648 + } else { # 1649 + None # 1650 + }, |dest| { # 1651 + let mut opts = RemoteOptions::new(dest); # 1652 + if let Some(key) = ssh_key { # 1653 + opts = opts.with_ssh_key(key); # 1654 + } # 1655 + Some(opts) # 1656 ~ }); # | Error: CLIPPY_WARNING: [#def45] crates/openshell-cli/src/run.rs:1690:23: warning: use Option::map_or_else instead of an if let/else # | # 1690 | let remote_host = if let Some(dest) = remote { # | _______________________^ # 1691 | | Some(dest.to_string()) # 1692 | | } else if let Some(metadata) = get_gateway_metadata(name) # 1693 | | && metadata.is_remote # ... | # 1697 | | None # 1698 | | }; # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # help: try # | # 1690 ~ let remote_host = remote.map_or_else(|| if let Some(metadata) = get_gateway_metadata(name) # 1691 + && metadata.is_remote # 1692 + { # 1693 + metadata.remote_host.clone() # 1694 + } else { # 1695 + None # 1696 ~ }, |dest| Some(dest.to_string())); # | Error: CLIPPY_WARNING: [#def46] crates/openshell-cli/src/run.rs:1695:29: warning: redundant clone # | # 1695 | metadata.remote_host.clone() # | ^^^^^^^^ help: remove this # | # note: this value is dropped without further use # --> crates/openshell-cli/src/run.rs:1695:9 # | # 1695 | metadata.remote_host.clone() # | ^^^^^^^^^^^^^^^^^^^^ # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_clone # = note: `-W clippy::redundant-clone` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_clone)]` Error: CLIPPY_WARNING: [#def47] crates/openshell-cli/src/run.rs:1774:63: warning: future cannot be sent between threads safely # | # 1774 | pub async fn doctor_check(container_runtime: Option<&str>) -> Result<()> { # | ^^^^^^^^^^ future returned by `doctor_check` is not `Send` # | # note: future is not `Send` as this value is used across an await # --> crates/openshell-cli/src/run.rs:1790:65 # | # 1776 | let mut stdout = std::io::stdout().lock(); # | ---------- has type `std::io::StdoutLock<'_>` which is not `Send` # ... # 1790 | match openshell_bootstrap::check_runtime_available(runtime).await { # | ^^^^^ await occurs here, with `mut stdout` maybe used later # = note: `std::sync::ReentrantLockGuard<'_, std::cell::RefCell<std::io::LineWriter<std::io::stdio::StdoutRaw>>>` doesn't implement `std::marker::Send` # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#future_not_send Error: CLIPPY_WARNING: [#def48] crates/openshell-cli/src/run.rs:1802:14: warning: unnecessary semicolon # | # 1802 | }; # | ^ help: remove # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#unnecessary_semicolon # = note: `-W clippy::unnecessary-semicolon` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::unnecessary_semicolon)]` Error: CLIPPY_WARNING: [#def49] crates/openshell-cli/src/run.rs:1897:9: warning: large future with a size of 16992 bytes # | # 1897 | crate::bootstrap::run_bootstrap(remote, ssh_key, requested_gpu).await?; # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Box::pin` on it: `Box::pin(crate::bootstrap::run_bootstrap(remote, ssh_key, requested_gpu))` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#large_futures # = note: `-W clippy::large-futures` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::large_futures)]` Error: CLIPPY_WARNING: [#def50] crates/openshell-cli/src/run.rs:1900:5: warning: large future with a size of 19616 bytes # | # 1900 | / sandbox_create( # 1901 | | &server, # 1902 | | name, # 1903 | | from, # ... | # 1918 | | &tls, # 1919 | | ) # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#large_futures # help: consider `Box::pin` on it # | # 1900 ~ Box::pin(sandbox_create( # 1901 + &server, # 1902 + name, # 1903 + from, # 1904 + &gateway_name, # 1905 + upload, # 1906 + keep, # 1907 + gpu, # 1908 + editor, # 1909 + remote, # 1910 + ssh_key, # 1911 + providers, # 1912 + policy, # 1913 + forward, # 1914 + command, # 1915 + tty_override, # 1916 + Some(false), # 1917 + auto_providers_override, # 1918 + &tls, # 1919 + )) # | Error: CLIPPY_WARNING: [#def51] crates/openshell-cli/src/run.rs:2022:17: warning: large future with a size of 16992 bytes # | # 2022 | crate::bootstrap::run_bootstrap(remote, ssh_key, requested_gpu).await?; # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Box::pin` on it: `Box::pin(crate::bootstrap::run_bootstrap(remote, ssh_key, requested_gpu))` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#large_futures Error: CLIPPY_WARNING: [#def52] crates/openshell-cli/src/run.rs:2269:33: warning: variables can be used directly in the `format!` string # | # 2269 | ... format!("Image pulled ({})", size_label) # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#uninlined_format_args # help: change this to # | # 2269 - format!("Image pulled ({})", size_label) # 2269 + format!("Image pulled ({size_label})") # | Error: CLIPPY_WARNING: [#def53] crates/openshell-cli/src/run.rs:2308:13: warning: these match arms have identical bodies # | # 2308 | / Some(openshell_core::proto::sandbox_stream_event::Payload::DraftPolicyUpdate(_)) => { # 2309 | | // Draft policy updates are handled in the draft panel, not during provisioning. # 2310 | | } # | |_____________^ # 2311 | None => {} # | ^^^^^^^^^^ # | # = help: if this is unintentional make the arms return different values # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#match_same_arms # = note: `-W clippy::match-same-arms` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::match_same_arms)]` # help: otherwise merge the patterns into a single arm # | # 2308 ~ Some(openshell_core::proto::sandbox_stream_event::Payload::DraftPolicyUpdate(_)) | None => { # 2309 | // Draft policy updates are handled in the draft panel, not during provisioning. # 2310 | } # 2311 ~ } # | Error: CLIPPY_WARNING: [#def54] crates/openshell-cli/src/run.rs:2569:5: warning: use Option::map_or instead of an if let/else # | # 2569 | / if let Ok(resolved) = resolve_from(source) { # 2570 | | match resolved { # 2571 | | ResolvedSource::Image(image) => image_requests_gpu(&image), # 2572 | | ResolvedSource::Dockerfile { .. } => false, # ... | # 2575 | | false # 2576 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # help: try # | # 2569 ~ resolve_from(source).map_or(false, |resolved| match resolved { # 2570 + ResolvedSource::Image(image) => image_requests_gpu(&image), # 2571 + ResolvedSource::Dockerfile { .. } => false, # 2572 + }) # | Error: CLIPPY_WARNING: [#def55] crates/openshell-cli/src/run.rs:4081:5: warning: variables can be used directly in the `format!` string # | # 4081 | println!("Sandbox: {}", name); # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#uninlined_format_args # help: change this to # | # 4081 - println!("Sandbox: {}", name); # 4081 + println!("Sandbox: {name}"); # | Error: CLIPPY_WARNING: [#def56] crates/openshell-cli/src/run.rs:4083:5: warning: variables can be used directly in the `format!` string # | # 4083 | println!("Policy Source: {}", policy_source); # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#uninlined_format_args # help: change this to # | # 4083 - println!("Policy Source: {}", policy_source); # 4083 + println!("Policy Source: {policy_source}"); # | Error: CLIPPY_WARNING: [#def57] crates/openshell-cli/src/run.rs:4650:1: warning: this function has too many arguments (8/7) # | # 4650 | / pub async fn sandbox_logs( # 4651 | | server: &str, # 4652 | | name: &str, # 4653 | | lines: u32, # ... | # 4658 | | tls: &TlsOptions, # 4659 | | ) -> Result<()> { # | |_______________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#too_many_arguments Error: CLIPPY_WARNING: [#def58] crates/openshell-cli/src/ssh.rs:45:22: warning: unused `self` argument # | # 45 | fn remote_target(self, host_alias: &str) -> String { # | ^^^^ # | # = help: consider refactoring to an associated function # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#unused_self # = note: `-W clippy::unused-self` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::unused_self)]` Error: CLIPPY_WARNING: [#def59] crates/openshell-cli/src/ssh.rs:343:9: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 343 | / match tokio::time::timeout(FOREGROUND_FORWARD_STARTUP_GRACE_PERIOD, child.wait()).await { # 344 | | Ok(status) => status.into_diagnostic()?, # 345 | | Err(_) => { # 346 | | eprintln!("{}", foreground_forward_started_message(name, spec)); # ... | # 349 | | } # | |_________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # help: try # | # 343 ~ if let Ok(status) = tokio::time::timeout(FOREGROUND_FORWARD_STARTUP_GRACE_PERIOD, child.wait()).await { status.into_diagnostic()? } else { # 344 + eprintln!("{}", foreground_forward_started_message(name, spec)); # 345 + child.wait().await.into_diagnostic()? # 346 + } # | Error: CLIPPY_WARNING: [#def60] crates/openshell-cli/src/ssh.rs:483:24: warning: use Option::map_or_else instead of an if let/else # | # 483 | let escaped_dest = match dest_dir { # | ________________________^ # 484 | | Some(d) => shell_escape(d), # 485 | | None => "$HOME".to_string(), # 486 | | }; # | |_____^ help: try: `dest_dir.map_or_else(|| "$HOME".to_string(), |d| shell_escape(d))` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else Error: CLIPPY_WARNING: [#def61] crates/openshell-cli/src/ssh.rs:566:32: warning: item in documentation is missing backticks # | # 566 | /// Split a sandbox path into (parent_directory, basename). # | ^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` # help: try # | # 566 - /// Split a sandbox path into (parent_directory, basename). # 566 + /// Split a sandbox path into (`parent_directory`, basename). # | Error: CLIPPY_WARNING: [#def62] crates/openshell-cli/src/ssh.rs:632:5: warning: this `if` statement can be collapsed # | # 632 | / if let Some(path) = sandbox_path { # 633 | | if local_path.is_file() && !path.ends_with('/') { # 634 | | let (parent, target_name) = split_sandbox_path(path); # 635 | | if parent != "/" { # ... | # 649 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 632 ~ if let Some(path) = sandbox_path # 633 ~ && local_path.is_file() && !path.ends_with('/') { # 634 | let (parent, target_name) = split_sandbox_path(path); # ... # 647 | } # 648 ~ } # | Error: CLIPPY_WARNING: [#def63] crates/openshell-cli/src/ssh.rs:783:5: warning: adding items after statements is confusing, since items exist from the start of the scope # | # 783 | const MAX_CONNECT_WAIT: Duration = Duration::from_secs(60); # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#items_after_statements # = note: `-W clippy::items-after-statements` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::items_after_statements)]` Error: CLIPPY_WARNING: [#def64] crates/openshell-cli/src/ssh.rs:784:5: warning: adding items after statements is confusing, since items exist from the start of the scope # | # 784 | const INITIAL_BACKOFF: Duration = Duration::from_secs(1); # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#items_after_statements Error: CLIPPY_WARNING: [#def65] crates/openshell-cli/src/ssh.rs:966:19: warning: called `map(<f>).unwrap_or(<a>)` on an `Option` value # | # 966 | let end = lines # | ___________________^ # 967 | | .iter() # 968 | | .enumerate() # 969 | | .skip(start + 1) # 970 | | .find(|(_, line)| line.trim_start().starts_with("Host ")) # 971 | | .map(|(idx, _)| idx) # 972 | | .unwrap_or(lines.len()); # | |___________________________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#map_unwrap_or # = note: `-W clippy::map-unwrap-or` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::map_unwrap_or)]` # help: use `map_or(<a>, <f>)` instead # | # 971 - .map(|(idx, _)| idx) # 972 - .unwrap_or(lines.len()); # 971 + .map_or(lines.len(), |(idx, _)| idx); # | Error: CLIPPY_WARNING: [#def66] crates/openshell-core/src/config.rs:4:34: warning: item in documentation is missing backticks # | # 4 | //! Configuration management for OpenShell components. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 4 - //! Configuration management for OpenShell components. # 4 + //! Configuration management for `OpenShell` components. # | Error: CLIPPY_WARNING: [#def67] crates/openshell-core/src/config.rs:42:56: warning: item in documentation is missing backticks # | # 42 | /// gRPC endpoint for sandboxes to connect back to OpenShell. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 42 - /// gRPC endpoint for sandboxes to connect back to OpenShell. # 42 + /// gRPC endpoint for sandboxes to connect back to `OpenShell`. # | Error: CLIPPY_WARNING: [#def68] crates/openshell-core/src/error.rs:4:28: warning: item in documentation is missing backticks # | # 4 | //! Common error types for OpenShell. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 4 - //! Common error types for OpenShell. # 4 + //! Common error types for `OpenShell`. # | Error: CLIPPY_WARNING: [#def69] crates/openshell-core/src/error.rs:9:29: warning: item in documentation is missing backticks # | # 9 | /// Result type alias using OpenShell's error type. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 9 - /// Result type alias using OpenShell's error type. # 9 + /// Result type alias using `OpenShell`'s error type. # | Error: CLIPPY_WARNING: [#def70] crates/openshell-core/src/error.rs:12:5: warning: item in documentation is missing backticks # | # 12 | /// OpenShell error type. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 12 - /// OpenShell error type. # 12 + /// `OpenShell` error type. # | Error: CLIPPY_WARNING: [#def71] crates/openshell-core/src/forward.rs:138:5: warning: this could be rewritten as `let...else` # | # 138 | / let entries = match std::fs::read_dir(&dir) { # 139 | | Ok(e) => e, # 140 | | Err(_) => return Ok(None), # 141 | | }; # | |______^ help: consider writing: `let Ok(entries) = std::fs::read_dir(&dir) else { return Ok(None) };` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#manual_let_else # = note: `-W clippy::manual-let-else` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_let_else)]` Error: CLIPPY_WARNING: [#def72] crates/openshell-core/src/forward.rs:146:9: warning: this `if` statement can be collapsed # | # 146 | / if let Some(name) = file_name.strip_suffix(&suffix) { # 147 | | if !name.is_empty() { # 148 | | return Ok(Some(name.to_string())); # 149 | | } # 150 | | } # | |_________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # = note: `-W clippy::collapsible-if` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::collapsible_if)]` # help: collapse nested if block # | # 146 ~ if let Some(name) = file_name.strip_suffix(&suffix) # 147 ~ && !name.is_empty() { # 148 | return Ok(Some(name.to_string())); # 149 ~ } # | Error: CLIPPY_WARNING: [#def73] crates/openshell-core/src/inference.rs:108:5: warning: use Option::map_or_else instead of an if let/else # | # 108 | / match profile_for(provider_type) { # 109 | | Some(profile) => { # 110 | | let headers = profile # 111 | | .default_headers # ... | # 117 | | None => (AuthHeader::Bearer, Vec::new()), # 118 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # = note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::option_if_let_else)]` # help: try # | # 108 ~ profile_for(provider_type).map_or_else(|| (AuthHeader::Bearer, Vec::new()), |profile| { # 109 + let headers = profile # 110 + .default_headers # 111 + .iter() # 112 + .map(|(k, v)| ((*k).to_string(), (*v).to_string())) # 113 + .collect(); # 114 + (profile.auth.clone(), headers) # 115 + }) # | Error: CLIPPY_WARNING: [#def74] crates/openshell-core/src/lib.rs:4:5: warning: item in documentation is missing backticks # | # 4 | //! OpenShell Core - shared library for OpenShell components. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` # help: try # | # 4 - //! OpenShell Core - shared library for OpenShell components. # 4 + //! `OpenShell` Core - shared library for OpenShell components. # | Error: CLIPPY_WARNING: [#def75] crates/openshell-core/src/lib.rs:4:41: warning: item in documentation is missing backticks # | # 4 | //! OpenShell Core - shared library for OpenShell components. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 4 - //! OpenShell Core - shared library for OpenShell components. # 4 + //! OpenShell Core - shared library for `OpenShell` components. # | Error: CLIPPY_WARNING: [#def76] crates/openshell-policy/src/lib.rs:4:52: warning: item in documentation is missing backticks # | # 4 | //! Shared sandbox policy parsing and defaults for OpenShell. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` # help: try # | # 4 - //! Shared sandbox policy parsing and defaults for OpenShell. # 4 + //! Shared sandbox policy parsing and defaults for `OpenShell`. # | Error: CLIPPY_WARNING: [#def77] crates/openshell-policy/src/lib.rs:104:15: warning: this argument (4 byte) is passed by reference, but would be more efficient if passed by value (limit: 8 byte) # | # 104 | fn is_zero(v: &u32) -> bool { # | ^^^^ help: consider passing by value instead: `u32` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#trivially_copy_pass_by_ref # = note: `-W clippy::trivially-copy-pass-by-ref` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::trivially_copy_pass_by_ref)]` Error: CLIPPY_WARNING: [#def78] crates/openshell-policy/src/lib.rs:315:72: warning: unnecessary boolean `not` operation # | # 315 | ... let yaml_matcher = if !matcher.any.is_empty() { # | __________________________________________^ # 316 | | ... QueryMatcherDef::Any(QueryAnyDef { # 317 | | ... any: matcher.any, # 318 | | ... }) # 319 | | ... } else { # 320 | | ... QueryMatcherDef::Glob(matcher.glob) # 321 | | ... }; # | |_______________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#if_not_else # = note: `-W clippy::if-not-else` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::if_not_else)]` # help: try # | # 315 ~ let yaml_matcher = if matcher.any.is_empty() { # 316 + QueryMatcherDef::Glob(matcher.glob) # 317 + } else { # 318 + QueryMatcherDef::Any(QueryAnyDef { # 319 + any: matcher.any, # 320 + }) # 321 ~ }; # | Error: CLIPPY_WARNING: [#def79] crates/openshell-policy/src/lib.rs:459:29: warning: redundant closure # | # 459 | .get_or_insert_with(|| ProcessPolicy::default()); # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `ProcessPolicy::default` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_closure # = note: `-W clippy::redundant-closure` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::redundant_closure)]` Error: CLIPPY_WARNING: [#def80] crates/openshell-tui/src/app.rs:362:33: warning: item in documentation is missing backticks # | # 362 | /// Warning shown at top of EnterKey modal (e.g. autodetect failure). # | ^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` # help: try # | # 362 - /// Warning shown at top of EnterKey modal (e.g. autodetect failure). # 362 + /// Warning shown at top of `EnterKey` modal (e.g. autodetect failure). # | Error: CLIPPY_WARNING: [#def81] crates/openshell-tui/src/app.rs:552:16: warning: this argument (272 byte) is passed by value, but might be more efficient if passed by reference (limit: 256 byte) # | # 552 | theme: crate::theme::Theme, # | ^^^^^^^^^^^^^^^^^^^ help: consider passing by reference instead: `&crate::theme::Theme` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#large_types_passed_by_value # = note: `-W clippy::large-types-passed-by-value` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::large_types_passed_by_value)]` Error: CLIPPY_WARNING: [#def82] crates/openshell-tui/src/app.rs:688:38: warning: called `map(<f>).unwrap_or(<a>)` on an `Option` value # | # 688 | let (value, scope) = settings # | ______________________________________^ # 689 | | .get(reg.key) # 690 | | .map(|es| { # 691 | | let v = es.value.as_ref().and_then(|sv| sv.value.clone()); # ... | # 698 | | }) # 699 | | .unwrap_or((None, SettingScope::Unset)); # | |___________________________________________________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#map_unwrap_or # = note: `-W clippy::map-unwrap-or` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::map_unwrap_or)]` # help: use `map_or(<a>, <f>)` instead # | # 690 ~ .map_or((None, SettingScope::Unset), |es| { # 691 | let v = es.value.as_ref().and_then(|sv| sv.value.clone()); # ... # 697 | (v, s) # 698 ~ }); # | Error: CLIPPY_WARNING: [#def83] crates/openshell-tui/src/app.rs:1624:66: warning: casting `isize` to `usize` may lose the sign of the value # | # 1624 | self.sandbox_log_scroll = (self.sandbox_log_scroll + delta as usize).min(max_scroll); # | ^^^^^^^^^^^^^^ help: if this is intentional, use `cast_unsigned()` instead: `delta.cast_unsigned()` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_sign_loss # = note: `-W clippy::cast-sign-loss` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_sign_loss)]` Error: CLIPPY_WARNING: [#def84] crates/openshell-tui/src/app.rs:1839:17: warning: unnested or-patterns # | # 1839 | KeyCode::Char('j') | KeyCode::Down | KeyCode::Char('k') | KeyCode::Up => { # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#unnested_or_patterns # = note: `-W clippy::unnested-or-patterns` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::unnested_or_patterns)]` # help: nest the patterns # | # 1839 - KeyCode::Char('j') | KeyCode::Down | KeyCode::Char('k') | KeyCode::Up => { # 1839 + KeyCode::Char('j' | 'k') | KeyCode::Down | KeyCode::Up => { # | Error: CLIPPY_WARNING: [#def85] crates/openshell-tui/src/app.rs:2045:40: warning: redundant closure # | # 2045 | .map_or(String::new(), |s| s.to_string()) # | ^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::ToString::to_string` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_closure_for_method_calls # = note: `-W clippy::redundant-closure-for-method-calls` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::redundant_closure_for_method_calls)]` Error: CLIPPY_WARNING: [#def86] crates/openshell-tui/src/event.rs:127:9: warning: used underscore-prefixed binding # | # 127 | self._keepalive.clone() # | ^^^^^^^^^^^^^^^ # | # note: binding is defined here # --> crates/openshell-tui/src/event.rs:59:5 # | # 59 | _keepalive: mpsc::UnboundedSender<Event>, # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#used_underscore_binding # = note: `-W clippy::used-underscore-binding` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::used_underscore_binding)]` Error: CLIPPY_WARNING: [#def87] crates/openshell-tui/src/lib.rs:35:16: warning: item in documentation is missing backticks # | # 35 | /// Launch the OpenShell TUI. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 35 - /// Launch the OpenShell TUI. # 35 + /// Launch the `OpenShell` TUI. # | Error: CLIPPY_WARNING: [#def88] crates/openshell-tui/src/lib.rs:37:55: warning: item in documentation is missing backticks # | # 37 | /// `channel` must be a connected gRPC channel to the OpenShell gateway. # | ^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 37 - /// `channel` must be a connected gRPC channel to the OpenShell gateway. # 37 + /// `channel` must be a connected gRPC channel to the `OpenShell` gateway. # | Error: CLIPPY_WARNING: [#def89] crates/openshell-tui/src/lib.rs:190:34: warning: use Option::map_or_else instead of an if let/else # | # 190 | let masked = if let Some(val) = provider.credentials.values().next() { # | __________________________________^ # 191 | | mask_secret(val) # 192 | | } else { # 193 | | "-".to_string() # 194 | | }; # | |_____________________^ help: try: `provider.credentials.values().next().map_or_else(|| "-".to_string(), |val| mask_secret(val))` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else Error: CLIPPY_WARNING: [#def90] crates/openshell-tui/src/lib.rs:315:17: warning: this `if` statement can be collapsed # | # 315 | / if app.screen == Screen::Splash { # 316 | | if let Some(start) = app.splash_start { # 317 | | if start.elapsed() >= SPLASH_DURATION { # 318 | | app.dismiss_splash(); # ... | # 321 | | } # | |_________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 315 ~ if app.screen == Screen::Splash # 316 ~ && let Some(start) = app.splash_start { # 317 | if start.elapsed() >= SPLASH_DURATION { # 318 | app.dismiss_splash(); # 319 | } # 320 ~ } # | Error: CLIPPY_WARNING: [#def91] crates/openshell-tui/src/lib.rs:316:21: warning: this `if` statement can be collapsed # | # 316 | / if let Some(start) = app.splash_start { # 317 | | if start.elapsed() >= SPLASH_DURATION { # 318 | | app.dismiss_splash(); # 319 | | } # 320 | | } # | |_____________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 316 ~ if let Some(start) = app.splash_start # 317 ~ && start.elapsed() >= SPLASH_DURATION { # 318 | app.dismiss_splash(); # 319 ~ } # | Error: CLIPPY_WARNING: [#def92] crates/openshell-tui/src/lib.rs:340:17: warning: this `if` statement can be collapsed # | # 340 | / if let Some(form) = app.create_form.as_ref() { # 341 | | if form.create_result.is_some() { # 342 | | let elapsed = form # 343 | | .anim_start # ... | # 394 | | } # | |_________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 340 ~ if let Some(form) = app.create_form.as_ref() # 341 ~ && form.create_result.is_some() { # 342 | let elapsed = form # ... # 392 | } # 393 ~ } # | Error: CLIPPY_WARNING: [#def93] crates/openshell-tui/src/lib.rs:363:50: warning: redundant closure # | # 363 | ... .map(|p| p.to_string()) # | ^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::ToString::to_string` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_closure_for_method_calls Error: CLIPPY_WARNING: [#def94] crates/openshell-tui/src/lib.rs:396:17: warning: this `if` statement can be collapsed # | # 396 | / if let Some(form) = app.create_provider_form.as_ref() { # 397 | | if form.create_result.is_some() { # 398 | | let elapsed = form # 399 | | .anim_start # ... | # 426 | | } # | |_________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # help: collapse nested if block # | # 396 ~ if let Some(form) = app.create_provider_form.as_ref() # 397 ~ && form.create_result.is_some() { # 398 | let elapsed = form # ... # 424 | } # 425 ~ } # | Error: CLIPPY_WARNING: [#def95] crates/openshell-tui/src/lib.rs:596:29: warning: calling `HashMap::default()` is more clear than this expression # | # 596 | fields: Default::default(), # | ^^^^^^^^^^^^^^^^^^ help: try: `HashMap::default()` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#default_trait_access # = note: `-W clippy::default-trait-access` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::default_trait_access)]` Error: CLIPPY_WARNING: [#def96] crates/openshell-tui/src/lib.rs:607:29: warning: calling `HashMap::default()` is more clear than this expression # | # 607 | fields: Default::default(), # | ^^^^^^^^^^^^^^^^^^ help: try: `HashMap::default()` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#default_trait_access Error: CLIPPY_WARNING: [#def97] crates/openshell-tui/src/lib.rs:623:9: warning: this could be rewritten as `let...else` # | # 623 | / let resp = # 624 | | match tokio::time::timeout(Duration::from_secs(5), client.watch_sandbox(req)).await { # 625 | | Ok(Ok(r)) => r, # 626 | | Ok(Err(_)) | Err(_) => return, // Silently stop — user can re-enter logs. # 627 | | }; # | |______________^ help: consider writing: `let Ok(Ok(resp)) = tokio::time::timeout(Duration::from_secs(5), client.watch_sandbox(req)).await else { return };` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#manual_let_else # = note: `-W clippy::manual-let-else` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_let_else)]` Error: CLIPPY_WARNING: [#def98] crates/openshell-tui/src/lib.rs:630:9: warning: this loop could be written as a `while let` loop # | # 630 | / loop { # 631 | | match stream.message().await { # 632 | | Ok(Some(event)) => { # 633 | | if let Some(openshell_core::proto::sandbox_stream_event::Payload::Log(log)) = # ... | # 642 | | } # | |_________^ help: try: `while let Ok(Some(event)) = stream.message().await { .. }` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#while_let_loop # = note: `-W clippy::while-let-loop` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::while_let_loop)]` Error: CLIPPY_WARNING: [#def99] crates/openshell-tui/src/lib.rs:719:25: warning: assigning the result of `Clone::clone()` may be inefficient # | # 719 | app.sandbox_providers_list = spec.providers.clone(); # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `clone_from()`: `app.sandbox_providers_list.clone_from(&spec.providers)` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#assigning_clones # = note: `-W clippy::assigning-clones` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::assigning_clones)]` Error: CLIPPY_WARNING: [#def100] crates/openshell-tui/src/lib.rs:801:29: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 801 | Ok(Ok(resp)) => match resp.into_inner().sandbox { # | _____________________________^ # 802 | | Some(s) => s.id, # 803 | | None => { # 804 | | app.status_text = "sandbox not found".to_string(); # ... | # 807 | | }, # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # help: try # | # 801 ~ Ok(Ok(resp)) => if let Some(s) = resp.into_inner().sandbox { s.id } else { # 802 + app.status_text = "sandbox not found".to_string(); # 803 + return; # 804 ~ }, # | Error: CLIPPY_WARNING: [#def101] crates/openshell-tui/src/lib.rs:945:29: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 945 | Ok(Ok(resp)) => match resp.into_inner().sandbox { # | _____________________________^ # 946 | | Some(s) => s.id, # 947 | | None => { # 948 | | app.status_text = format!("exec: sandbox {sandbox_name} not found"); # ... | # 951 | | }, # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # help: try # | # 945 ~ Ok(Ok(resp)) => if let Some(s) = resp.into_inner().sandbox { s.id } else { # 946 + app.status_text = format!("exec: sandbox {sandbox_name} not found"); # 947 + return; # 948 ~ }, # | Error: CLIPPY_WARNING: [#def102] crates/openshell-tui/src/lib.rs:1010:14: warning: redundant closure # | # 1010 | .map(|word| shell_escape(word)) # | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `shell_escape` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_closure # = note: `-W clippy::redundant-closure` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::redundant_closure)]` Error: CLIPPY_WARNING: [#def103] crates/openshell-tui/src/lib.rs:1200:42: warning: variables can be used directly in the `format!` string # | # 1200 | ... Span::styled(format!("{:<6} {}", method, target), t.text), # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#uninlined_format_args # help: change this to # | # 1200 - Span::styled(format!("{:<6} {}", method, target), t.text), # 1200 + Span::styled(format!("{method:<6} {target}"), t.text), # | Error: CLIPPY_WARNING: [#def104] crates/openshell-tui/src/lib.rs:1268:5: warning: assigning the result of `Clone::clone()` may be inefficient # | # 1268 | app.pending_forward_ports = ports.clone(); # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `clone_from()`: `app.pending_forward_ports.clone_from(&ports)` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#assigning_clones Error: CLIPPY_WARNING: [#def105] crates/openshell-tui/src/lib.rs:1337:17: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 1337 | / match client.get_sandbox(req).await { # 1338 | | Ok(resp) => { # 1339 | | if let Some(sandbox) = resp.into_inner().sandbox { # 1340 | | if sandbox.phase == 2 { # ... | # 1351 | | Err(_) => {} // Retry on transient errors. # 1352 | | } # | |_________________^ # | # = note: you might want to preserve the comments from inside the `match` # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match # = note: `-W clippy::single-match` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::single_match)]` # help: try # | # 1337 ~ if let Ok(resp) = client.get_sandbox(req).await { # 1338 + if let Some(sandbox) = resp.into_inner().sandbox { # 1339 + if sandbox.phase == 2 { # 1340 + break sandbox.id; # 1341 + } # 1342 + if sandbox.phase == 3 { # 1343 + let _ = tx.send(Event::CreateResult(Err( # 1344 + "sandbox entered error state".to_string(), # 1345 + ))); # 1346 + return; # 1347 + } # 1348 + } # 1349 + } # | Error: CLIPPY_WARNING: [#def106] crates/openshell-tui/src/lib.rs:1547:29: warning: calling `HashMap::default()` is more clear than this expression # | # 1547 | config: Default::default(), # | ^^^^^^^^^^^^^^^^^^ help: try: `HashMap::default()` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#default_trait_access Error: CLIPPY_WARNING: [#def107] crates/openshell-tui/src/lib.rs:1626:25: warning: calling `HashMap::default()` is more clear than this expression # | # 1626 | config: Default::default(), # | ^^^^^^^^^^^^^^^^^^ help: try: `HashMap::default()` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#default_trait_access Error: CLIPPY_WARNING: [#def108] crates/openshell-tui/src/lib.rs:1930:17: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 1930 | / match openshell_core::settings::parse_bool_like(&raw) { # 1931 | | Some(v) => setting_value::Value::BoolValue(v), # 1932 | | None => { # 1933 | | let _ = tx.send(Event::GlobalSettingSetResult(Err(format!( # ... | # 1938 | | } # | |_________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # help: try # | # 1930 ~ if let Some(v) = openshell_core::settings::parse_bool_like(&raw) { setting_value::Value::BoolValue(v) } else { # 1931 + let _ = tx.send(Event::GlobalSettingSetResult(Err(format!( # 1932 + "invalid bool value: {raw}" # 1933 + )))); # 1934 + return; # 1935 + } # | Error: CLIPPY_WARNING: [#def109] crates/openshell-tui/src/lib.rs:1940:64: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 1940 | openshell_core::settings::SettingValueKind::Int => match raw.parse::<i64>() { # | ________________________________________________________________^ # 1941 | | Ok(v) => setting_value::Value::IntValue(v), # 1942 | | Err(_) => { # 1943 | | let _ = tx.send(Event::GlobalSettingSetResult(Err(format!( # ... | # 1948 | | }, # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # help: try # | # 1940 ~ openshell_core::settings::SettingValueKind::Int => if let Ok(v) = raw.parse::<i64>() { setting_value::Value::IntValue(v) } else { # 1941 + let _ = tx.send(Event::GlobalSettingSetResult(Err(format!( # 1942 + "invalid int value: {raw}" # 1943 + )))); # 1944 + return; # 1945 ~ }, # | Error: CLIPPY_WARNING: [#def110] crates/openshell-tui/src/lib.rs:2032:17: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 2032 | / match openshell_core::settings::parse_bool_like(&raw) { # 2033 | | Some(v) => setting_value::Value::BoolValue(v), # 2034 | | None => { # 2035 | | let _ = tx.send(Event::SandboxSettingSetResult(Err(format!( # ... | # 2040 | | } # | |_________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # help: try # | # 2032 ~ if let Some(v) = openshell_core::settings::parse_bool_like(&raw) { setting_value::Value::BoolValue(v) } else { # 2033 + let _ = tx.send(Event::SandboxSettingSetResult(Err(format!( # 2034 + "invalid bool value: {raw}" # 2035 + )))); # 2036 + return; # 2037 + } # | Error: CLIPPY_WARNING: [#def111] crates/openshell-tui/src/lib.rs:2042:64: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 2042 | openshell_core::settings::SettingValueKind::Int => match raw.parse::<i64>() { # | ________________________________________________________________^ # 2043 | | Ok(v) => setting_value::Value::IntValue(v), # 2044 | | Err(_) => { # 2045 | | let _ = tx.send(Event::SandboxSettingSetResult(Err(format!( # ... | # 2050 | | }, # | |_____________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # help: try # | # 2042 ~ openshell_core::settings::SettingValueKind::Int => if let Ok(v) = raw.parse::<i64>() { setting_value::Value::IntValue(v) } else { # 2043 + let _ = tx.send(Event::SandboxSettingSetResult(Err(format!( # 2044 + "invalid int value: {raw}" # 2045 + )))); # 2046 + return; # 2047 ~ }, # | Error: CLIPPY_WARNING: [#def112] crates/openshell-tui/src/theme.rs:216:27: warning: item in documentation is missing backticks # | # 216 | /// iTerm2, Terminal.app, WezTerm, Alacritty, and most modern terminals. # | ^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 216 - /// iTerm2, Terminal.app, WezTerm, Alacritty, and most modern terminals. # 216 + /// iTerm2, Terminal.app, `WezTerm`, Alacritty, and most modern terminals. # | Error: CLIPPY_WARNING: [#def113] crates/openshell-tui/src/ui/create_provider.rs:333:30: warning: variables can be used directly in the `format!` string # | # 333 | let padded = format!("{:width$}", env_name, width = max_name_len); # | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#uninlined_format_args # = note: `-W clippy::uninlined-format-args` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::uninlined_format_args)]` # help: change this to # | # 333 - let padded = format!("{:width$}", env_name, width = max_name_len); # 333 + let padded = format!("{env_name:max_name_len$}"); # | Error: CLIPPY_WARNING: [#def114] crates/openshell-tui/src/ui/create_provider.rs:356:5: warning: all if blocks contain the same code at the end # | # 356 | / idx += 1; # 357 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#branches_sharing_code # = note: `-W clippy::branches-sharing-code` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::branches_sharing_code)]` # help: consider moving these statements after the if # | # 356 ~ } # 357 + idx += 1; # | Error: CLIPPY_WARNING: [#def115] crates/openshell-tui/src/ui/create_sandbox.rs:307:22: warning: manual implementation of `.is_multiple_of()` # | # 307 | let mouth_open = frame % 2 == 0; # | ^^^^^^^^^^^^^^ help: replace with: `frame.is_multiple_of(2)` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#manual_is_multiple_of # = note: `-W clippy::manual-is-multiple-of` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::manual_is_multiple_of)]` Error: CLIPPY_WARNING: [#def116] crates/openshell-tui/src/ui/create_sandbox.rs:371:9: warning: all if blocks contain the same code at the end # | # 371 | / current_str.push(ch); # 372 | | } # | |_________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#branches_sharing_code # help: consider moving these statements after the if # | # 371 ~ } # 372 + current_str.push(ch); # | Error: CLIPPY_WARNING: [#def117] crates/openshell-tui/src/ui/global_settings.rs:158:24: warning: casting `usize` to `u16` may truncate the value # | # 158 | let popup_height = (lines.len() + 2) as u16; # | ^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_possible_truncation # = note: `-W clippy::cast-possible-truncation` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_possible_truncation)]` # help: ... or use `try_from` and handle the error accordingly # | # 158 - let popup_height = (lines.len() + 2) as u16; # 158 + let popup_height = u16::try_from(lines.len() + 2); # | Error: CLIPPY_WARNING: [#def118] crates/openshell-tui/src/ui/global_settings.rs:242:24: warning: casting `usize` to `u16` may truncate the value # | # 242 | let popup_height = (lines.len() + 2) as u16; # | ^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_possible_truncation # help: ... or use `try_from` and handle the error accordingly # | # 242 - let popup_height = (lines.len() + 2) as u16; # 242 + let popup_height = u16::try_from(lines.len() + 2); # | Error: CLIPPY_WARNING: [#def119] crates/openshell-tui/src/ui/mod.rs:4:1: warning: pub(crate) module inside private module # | # 4 | pub(crate) mod create_provider; # | ----------^^^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate # = note: `-W clippy::redundant-pub-crate` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_pub_crate)]` Error: CLIPPY_WARNING: [#def120] crates/openshell-tui/src/ui/mod.rs:5:1: warning: pub(crate) module inside private module # | # 5 | pub(crate) mod create_sandbox; # | ----------^^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def121] crates/openshell-tui/src/ui/mod.rs:7:1: warning: pub(crate) module inside private module # | # 7 | pub(crate) mod global_settings; # | ----------^^^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def122] crates/openshell-tui/src/ui/mod.rs:8:1: warning: pub(crate) module inside private module # | # 8 | pub(crate) mod providers; # | ----------^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def123] crates/openshell-tui/src/ui/mod.rs:9:1: warning: pub(crate) module inside private module # | # 9 | pub(crate) mod sandbox_detail; # | ----------^^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def124] crates/openshell-tui/src/ui/mod.rs:11:1: warning: pub(crate) module inside private module # | # 11 | pub(crate) mod sandbox_logs; # | ----------^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def125] crates/openshell-tui/src/ui/mod.rs:13:1: warning: pub(crate) module inside private module # | # 13 | pub(crate) mod sandbox_settings; # | ----------^^^^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def126] crates/openshell-tui/src/ui/mod.rs:14:1: warning: pub(crate) module inside private module # | # 14 | pub(crate) mod sandboxes; # | ----------^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def127] crates/openshell-tui/src/ui/mod.rs:92:5: warning: this `if` statement can be collapsed # | # 92 | / if app.focus == Focus::SandboxLogs { # 93 | | if let Some(detail_idx) = app.log_detail_index { # 94 | | let filtered: Vec<&app::LogLine> = app.filtered_log_lines(); # 95 | | if let Some(log) = filtered.get(detail_idx) { # ... | # 99 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if # = note: `-W clippy::collapsible-if` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::collapsible_if)]` # help: collapse nested if block # | # 92 ~ if app.focus == Focus::SandboxLogs # 93 ~ && let Some(detail_idx) = app.log_detail_index { # 94 | let filtered: Vec<&app::LogLine> = app.filtered_log_lines(); # ... # 97 | } # 98 ~ } # | Error: CLIPPY_WARNING: [#def128] crates/openshell-tui/src/ui/mod.rs:328:39: warning: called `map(<f>).unwrap_or(<a>)` on an `Option` value # | # 328 | let selected_status = app # | _______________________________________^ # 329 | | .draft_chunks # 330 | | .get(app.draft_scroll + app.draft_selected) # 331 | | .map(|c| c.status.as_str()) # 332 | | .unwrap_or(""); # | |__________________________________^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#map_unwrap_or # help: use `map_or(<a>, <f>)` instead # | # 331 - .map(|c| c.status.as_str()) # 332 - .unwrap_or(""); # 331 + .map_or("", |c| c.status.as_str()); # | Error: CLIPPY_WARNING: [#def129] crates/openshell-tui/src/ui/mod.rs:459:1: warning: pub(crate) function inside private module # | # 459 | pub(crate) fn centered_popup(percent_x: u16, height: u16, area: Rect) -> Rect { # | ----------^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def130] crates/openshell-tui/src/ui/sandbox_draft.rs:327:24: warning: casting `usize` to `u16` may truncate the value # | # 327 | let popup_height = (7 + list_lines) as u16; # | ^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_possible_truncation # help: ... or use `try_from` and handle the error accordingly # | # 327 - let popup_height = (7 + list_lines) as u16; # 327 + let popup_height = u16::try_from(7 + list_lines); # | Error: CLIPPY_WARNING: [#def131] crates/openshell-tui/src/ui/sandbox_logs.rs:338:30: warning: item in documentation is missing backticks # | # 338 | /// Priority field order for L7_REQUEST log lines. # | ^^^^^^^^^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#doc_markdown # help: try # | # 338 - /// Priority field order for L7_REQUEST log lines. # 338 + /// Priority field order for `L7_REQUEST` log lines. # | Error: CLIPPY_WARNING: [#def132] crates/openshell-tui/src/ui/sandbox_logs.rs:351:1: warning: pub(crate) function inside private module # | # 351 | pub(crate) fn ordered_fields<'a>(log: &'a LogLine) -> Vec<(&'a str, &'a str)> { # | ----------^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def133] crates/openshell-tui/src/ui/sandbox_logs.rs:351:30: warning: the following explicit lifetimes could be elided: 'a # | # 351 | pub(crate) fn ordered_fields<'a>(log: &'a LogLine) -> Vec<(&'a str, &'a str)> { # | ^^ ^^ ^^ ^^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#needless_lifetimes # = note: `-W clippy::needless-lifetimes` implied by `-W clippy::all` # = help: to override `-W clippy::all` add `#[allow(clippy::needless_lifetimes)]` # help: elide the lifetimes # | # 351 - pub(crate) fn ordered_fields<'a>(log: &'a LogLine) -> Vec<(&'a str, &'a str)> { # 351 + pub(crate) fn ordered_fields(log: &LogLine) -> Vec<(&str, &str)> { # | Error: CLIPPY_WARNING: [#def134] crates/openshell-tui/src/ui/sandbox_logs.rs:361:5: warning: use Option::map_or_else instead of an if let/else # | # 361 | / match order { # 362 | | Some(priority) => { # 363 | | let mut result: Vec<(&str, &str)> = Vec::with_capacity(log.fields.len()); # ... | # 391 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_if_let_else # = note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery` # = help: to override `-W clippy::nursery` add `#[allow(clippy::option_if_let_else)]` # help: try # | # 361 ~ order.map_or_else(|| { # 362 + // Default: alphabetical. # 363 + let mut pairs: Vec<(&str, &str)> = log # 364 + .fields # 365 + .iter() # 366 + .map(|(k, v)| (k.as_str(), v.as_str())) # 367 + .collect(); # 368 + pairs.sort_by_key(|(k, _)| *k); # 369 + pairs # 370 + }, |priority| { # 371 + let mut result: Vec<(&str, &str)> = Vec::with_capacity(log.fields.len()); # 372 + // Add priority fields first (in order). # 373 + for &key in priority { # 374 + if let Some(val) = log.fields.get(key) { # 375 + result.push((key, val.as_str())); # 376 + } # 377 + } # 378 + // Add remaining fields alphabetically. # 379 + let mut remaining: Vec<(&str, &str)> = log # 380 + .fields # 381 + .iter() # 382 + .filter(|(k, _)| !priority.contains(&k.as_str())) # 383 + .map(|(k, v)| (k.as_str(), v.as_str())) # 384 + .collect(); # 385 + remaining.sort_by_key(|(k, _)| *k); # 386 + result.extend(remaining); # 387 + result # 388 + }) # | Error: CLIPPY_WARNING: [#def135] crates/openshell-tui/src/ui/sandbox_logs.rs:361:5: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` # | # 361 | / match order { # 362 | | Some(priority) => { # 363 | | let mut result: Vec<(&str, &str)> = Vec::with_capacity(log.fields.len()); # ... | # 391 | | } # | |_____^ # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match_else # = note: `-W clippy::single-match-else` implied by `-W clippy::pedantic` # = help: to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]` # help: try # | # 361 ~ if let Some(priority) = order { # 362 + let mut result: Vec<(&str, &str)> = Vec::with_capacity(log.fields.len()); # 363 + // Add priority fields first (in order). # 364 + for &key in priority { # 365 + if let Some(val) = log.fields.get(key) { # 366 + result.push((key, val.as_str())); # 367 + } # 368 + } # 369 + // Add remaining fields alphabetically. # 370 + let mut remaining: Vec<(&str, &str)> = log # 371 + .fields # 372 + .iter() # 373 + .filter(|(k, _)| !priority.contains(&k.as_str())) # 374 + .map(|(k, v)| (k.as_str(), v.as_str())) # 375 + .collect(); # 376 + remaining.sort_by_key(|(k, _)| *k); # 377 + result.extend(remaining); # 378 + result # 379 + } else { # 380 + // Default: alphabetical. # 381 + let mut pairs: Vec<(&str, &str)> = log # 382 + .fields # 383 + .iter() # 384 + .map(|(k, v)| (k.as_str(), v.as_str())) # 385 + .collect(); # 386 + pairs.sort_by_key(|(k, _)| *k); # 387 + pairs # 388 + } # | Error: CLIPPY_WARNING: [#def136] crates/openshell-tui/src/ui/sandbox_logs.rs:407:1: warning: pub(crate) function inside private module # | # 407 | pub(crate) fn format_short_time(epoch_ms: i64) -> String { # | ----------^^^^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def137] crates/openshell-tui/src/ui/sandbox_logs.rs:423:1: warning: pub(crate) function inside private module # | # 423 | pub(crate) fn format_log_line_plain(log: &LogLine) -> String { # | ----------^^^^^^^^^^^^^^^^^^^^^^^^^ # | | # | help: consider using: `pub` # | # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#redundant_pub_crate Error: CLIPPY_WARNING: [#def138] crates/openshell-tui/src/ui/sandbox_settings.rs:166:24: warning: casting `usize` to `u16` may truncate the value # | # 166 | let popup_height = (lines.len() + 2) as u16; # | ^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_possible_truncation # help: ... or use `try_from` and handle the error accordingly # | # 166 - let popup_height = (lines.len() + 2) as u16; # 166 + let popup_height = u16::try_from(lines.len() + 2); # | Error: CLIPPY_WARNING: [#def139] crates/openshell-tui/src/ui/sandbox_settings.rs:210:24: warning: casting `usize` to `u16` may truncate the value # | # 210 | let popup_height = (lines.len() + 2) as u16; # | ^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_possible_truncation # help: ... or use `try_from` and handle the error accordingly # | # 210 - let popup_height = (lines.len() + 2) as u16; # 210 + let popup_height = u16::try_from(lines.len() + 2); # | Error: CLIPPY_WARNING: [#def140] crates/openshell-tui/src/ui/sandbox_settings.rs:248:24: warning: casting `usize` to `u16` may truncate the value # | # 248 | let popup_height = (lines.len() + 2) as u16; # | ^^^^^^^^^^^^^^^^^^^^^^^^ # | # = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... # = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#cast_possible_truncation # help: ... or use `try_from` and handle the error accordingly # | # 248 - let popup_height = (lines.len() + 2) as u16; # 248 + let popup_height = u16::try_from(lines.len() + 2); # | Error: CPPCHECK_WARNING (CWE-562): [#def141] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/compiler/python/pyi_generator.cc:602: error[danglingLifetime]: Non-local variable 'printer_' will use pointer to local variable 'printer'. # 600| GOOGLE_CHECK(output.get()); # 601| io::Printer printer(output.get(), '$'); # 602|-> printer_ = &printer; # 603| # 604| // item map will store "DESCRIPTOR", top level extensions, top level enum Error: CPPCHECK_WARNING (CWE-562): [#def142] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/map.h:718: error[returnTempReference]: Reference to temporary returned. # 716| template <typename K> # 717| value_type& operator[](K&& k) { # 718|-> return *try_emplace(std::forward<K>(k)).first; # 719| } # 720| Error: CPPCHECK_WARNING (CWE-562): [#def143] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc:530: error[invalidLifetime]: Using pointer to local variable 'node' that is out of scope. # 528| } # 529| # 530|-> child->set_is_placeholder(false); # 531| if (child->kind() == OBJECT && child->number_of_children() == 0) { # 532| child->PopulateChildren(typeinfo_); Error: CPPCHECK_WARNING (CWE-562): [#def144] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc:531: error[invalidLifetime]: Using pointer to local variable 'node' that is out of scope. # 529| # 530| child->set_is_placeholder(false); # 531|-> if (child->kind() == OBJECT && child->number_of_children() == 0) { # 532| child->PopulateChildren(typeinfo_); # 533| } Error: CPPCHECK_WARNING (CWE-562): [#def145] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc:532: error[invalidLifetime]: Using pointer to local variable 'node' that is out of scope. # 530| child->set_is_placeholder(false); # 531| if (child->kind() == OBJECT && child->number_of_children() == 0) { # 532|-> child->PopulateChildren(typeinfo_); # 533| } # 534| Error: CPPCHECK_WARNING (CWE-562): [#def146] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc:536: error[invalidLifetime]: Using pointer to local variable 'node' that is out of scope. # 534| # 535| stack_.push(current_); # 536|-> current_ = child; # 537| return this; # 538| } Error: CPPCHECK_WARNING (CWE-562): [#def147] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc:573: error[invalidLifetime]: Using pointer to local variable 'node' that is out of scope. # 571| current_->AddChild(node.release()); # 572| } # 573|-> child->set_is_placeholder(false); # 574| # 575| stack_.push(current_); Error: CPPCHECK_WARNING (CWE-562): [#def148] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc:576: error[invalidLifetime]: Using pointer to local variable 'node' that is out of scope. # 574| # 575| stack_.push(current_); # 576|-> current_ = child; # 577| return this; # 578| } Error: CPPCHECK_WARNING (CWE-562): [#def149] openshell-0.0.21/vendor/protobuf-src/protobuf/src/google/protobuf/util/internal/proto_writer.h:129: error[returnTempReference]: Reference to temporary returned. # 127| // Returns the location tracker to use for tracking locations for errors. # 128| const LocationTrackerInterface& location() { # 129|-> return element_ != nullptr ? *element_ : *tracker_; # 130| } # 131|
| analyzer-version-clippy | 1.94.1 |
| analyzer-version-cppcheck | 2.20.0 |
| analyzer-version-gcc | 16.0.1 |
| analyzer-version-gcc-analyzer | 16.0.1 |
| analyzer-version-shellcheck | 0.11.0 |
| analyzer-version-unicontrol | 0.0.2 |
| enabled-plugins | clippy, cppcheck, gcc, shellcheck, unicontrol |
| exit-code | 0 |
| host | ip-172-16-1-224.us-west-2.compute.internal |
| known-false-positives | /usr/share/csmock/known-false-positives.js |
| known-false-positives-rpm | known-false-positives-0.0.0.20260320.200800.gd35503f.main-1.el9.noarch |
| mock-config | fedora-rawhide-x86_64 |
| project-name | openshell-0.0.21-1.20260406205235926512.midstream.73.g8592ab0 |
| store-results-to | /tmp/tmpdd72nfyx/openshell-0.0.21-1.20260406205235926512.midstream.73.g8592ab0.tar.xz |
| time-created | 2026-04-07 00:46:21 |
| time-finished | 2026-04-07 01:02:41 |
| tool | csmock |
| tool-args | '/usr/bin/csmock' '-r' 'fedora-rawhide-x86_64' '-t' 'cppcheck,gcc,shellcheck,clippy,unicontrol' '-o' '/tmp/tmpdd72nfyx/openshell-0.0.21-1.20260406205235926512.midstream.73.g8592ab0.tar.xz' '--gcc-analyze' '--unicontrol-notests' '--unicontrol-bidi-only' '--install' 'pam' '/tmp/tmpdd72nfyx/openshell-0.0.21-1.20260406205235926512.midstream.73.g8592ab0.src.rpm' |
| tool-version | csmock-3.8.4.20260302.153719.g8203630-1.el9 |