Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Experimental] <T as Into<T>>::into lint #129249

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

estebank
Copy link
Contributor

@estebank estebank commented Aug 18, 2024

Running crater to see how common that pattern is. The Lint would have to be at most warn-by-default because there are a handful of cases detected that are actually perfectly reasonable (type aliases with per-platform cfg, or macros) which are now at best half-heartedly handled.

I've detected a handful of cases where we're calling .into() unnecessarily in the rustc codebase as well, and changed those.

CC #127343.

@rustbot
Copy link
Collaborator

rustbot commented Aug 18, 2024

r? @chenyukang

rustbot has assigned @chenyukang.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added O-unix Operating system: Unix-like S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. labels Aug 18, 2024
@rustbot
Copy link
Collaborator

rustbot commented Aug 18, 2024

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred in src/tools/clippy

cc @rust-lang/clippy

@estebank
Copy link
Contributor Author

@bors try @craterbot check

@estebank
Copy link
Contributor Author

@bors try

@bors
Copy link
Contributor

bors commented Aug 18, 2024

🔒 Merge conflict

This pull request and the master branch diverged in a way that cannot be automatically merged. Please rebase on top of the latest master branch, and let the reviewer approve again.

How do I rebase?

Assuming self is your fork and upstream is this repository, you can resolve the conflict following these steps:

  1. git checkout useless-into (switch to your branch)
  2. git fetch upstream master (retrieve the latest master)
  3. git rebase upstream/master -p (rebase on top of it)
  4. Follow the on-screen instruction to resolve conflicts (check git status if you got lost).
  5. git push self useless-into --force-with-lease (update this PR)

You may also read Git Rebasing to Resolve Conflicts by Drew Blessing for a short tutorial.

Please avoid the "Resolve conflicts" button on GitHub. It uses git merge instead of git rebase which makes the PR commit history more difficult to read.

Sometimes step 4 will complete without asking for resolution. This is usually due to difference between how Cargo.lock conflict is handled during merge and rebase. This is normal, and you should still perform step 5 to update this PR.

Error message
Auto-merging compiler/rustc_parse/src/parser/item.rs
CONFLICT (content): Merge conflict in compiler/rustc_parse/src/parser/item.rs
Auto-merging compiler/rustc_middle/src/ty/print/pretty.rs
Auto-merging compiler/rustc_middle/src/ty/consts.rs
Auto-merging compiler/rustc_lint/src/builtin.rs
Automatic merge failed; fix conflicts and then commit the result.

Comment on lines +3102 to +3118
fn check_item_post(&mut self, cx: &LateContext<'tcx>, item: &hir::Item<'_>) {
let hir::ItemKind::Use(path, kind) = item.kind else { return };
tracing::info!("{:#?}", item);
tracing::info!(?path, ?kind);
for res in &path.res {
let Res::Def(DefKind::TyAlias, def_id) = res else { continue };
let ty = cx.tcx.type_of(def_id).instantiate_identity();
let name = cx.tcx.item_name(*def_id);
// println!("{ty:?} {name:?}");
self.ignored_types.push(ty);
for stripped in cx.tcx.stripped_cfg_items(def_id.krate) {
if stripped.name.name == name {
tracing::info!("{name:#?}");
}
}
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not the right way to do this check, but it was the fastest way of getting a semi-accurate discard of types that have type aliases in scope to somewhat handle platform cfg cases.

@estebank
Copy link
Contributor Author

@bors try

@bors
Copy link
Contributor

bors commented Aug 18, 2024

⌛ Trying commit 2aaca93 with merge 622c05b...

bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 18, 2024
[Experimental] `<T as Into<T>>::into` lint

Running crater to see how common that pattern is. The Lint would have to be at most warn-by-default because there are a handful of cases detected that are actually perfectly reasonable (`type` aliases with per-platform `cfg`, or macros) which are now at best half-heartedly handled.

I've detected a handful of cases where we're calling `.into()` unnecessarily in the `rustc` codebase as well, and changed those.
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Aug 18, 2024

💔 Test failed - checks-actions

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 18, 2024
@matthiaskrgr
Copy link
Member

matthiaskrgr commented Aug 18, 2024

🤔 looks like you are reimplementing a subset of https://rust-lang.github.io/rust-clippy/master/index.html#/useless_conversion ?

edit: spoiler
at 21:37:58 ❯ ./x.py clippy -Aclippy::all -Wclippy::useless_conversion
Building bootstrap
    Finished `dev` profile [unoptimized] target(s) in 0.04s
Linting stage0 library {alloc, core, panic_abort, panic_unwind, proc_macro, std, sysroot, test, unwind} (x86_64-unknown-linux-gnu)
   Compiling compiler_builtins v0.1.118
    Checking core v0.0.0 (/home/matthias/vcs/github/rust/library/core)
   Compiling libc v0.2.155
   Compiling memchr v2.5.0
   Compiling std v0.0.0 (/home/matthias/vcs/github/rust/library/std)
    Checking rustc-std-workspace-core v1.99.0 (/home/matthias/vcs/github/rust/library/rustc-std-workspace-core)
    Checking alloc v0.0.0 (/home/matthias/vcs/github/rust/library/alloc)
    Checking cfg-if v1.0.0
    Checking adler v1.0.2
    Checking rustc-demangle v0.1.24
    Checking unwind v0.0.0 (/home/matthias/vcs/github/rust/library/unwind)
    Checking rustc-std-workspace-alloc v1.99.0 (/home/matthias/vcs/github/rust/library/rustc-std-workspace-alloc)
    Checking panic_abort v0.0.0 (/home/matthias/vcs/github/rust/library/panic_abort)
    Checking panic_unwind v0.0.0 (/home/matthias/vcs/github/rust/library/panic_unwind)
    Checking gimli v0.29.0
    Checking hashbrown v0.14.5
    Checking object v0.36.2
    Checking miniz_oxide v0.7.4
    Checking std_detect v0.1.5 (/home/matthias/vcs/github/rust/library/stdarch/crates/std_detect)
    Checking addr2line v0.22.0
warning: useless conversion to the same type: `i32`
   --> std/src/os/unix/process.rs:333:9
    |
333 |         self.as_inner().into_raw().into()
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `self.as_inner().into_raw()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
    = note: `-D clippy::useless-conversion` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: useless conversion to the same type: `os::fd::owned::OwnedFd`
   --> std/src/os/fd/owned.rs:331:9
    |
331 |         tcp_stream.into_inner().into_socket().into_inner().into_inner().into()
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `tcp_stream.into_inner().into_socket().into_inner().into_inner()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `os::fd::owned::OwnedFd`
   --> std/src/os/fd/owned.rs:358:9
    |
358 |         tcp_listener.into_inner().into_socket().into_inner().into_inner().into()
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `tcp_listener.into_inner().into_socket().into_inner().into_inner()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `os::fd::owned::OwnedFd`
   --> std/src/os/fd/owned.rs:385:9
    |
385 |         udp_socket.into_inner().into_socket().into_inner().into_inner().into()
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `udp_socket.into_inner().into_socket().into_inner().into_inner()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `usize`
   --> std/src/sys/pal/unix/process/process_unix.rs:307:37
    |
307 |                 cvt(libc::setgroups(_g.len().try_into().unwrap(), _g.as_ptr()))?;
    |                                     ^^^^^^^^^^^^^^^^^^^
    |
    = help: consider removing `.try_into()`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `io::error::Error`
   --> std/src/sys/pal/unix/process/process_unix.rs:328:40
    |
328 | ...                   return Err(e.into());
    |                                  ^^^^^^^^ help: consider removing `.into()`: `e`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `i64`
   --> std/src/sys/pal/unix/time.rs:196:21
    |
196 |             tv_sec: self.tv_sec.try_into().ok()?,
    |                     ^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: consider removing `.try_into()`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `ffi::os_str::OsString`
  --> std/src/sys_common/process.rs:38:31
   |
38 |                 result.insert(k.into(), v);
   |                               ^^^^^^^^ help: consider removing `.into()`: `k`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: `std` (lib) generated 8 warnings (run `cargo clippy --fix --lib -p std` to apply 6 suggestions)
    Checking rustc-std-workspace-std v1.99.0 (/home/matthias/vcs/github/rust/library/rustc-std-workspace-std)
    Checking proc_macro v0.0.0 (/home/matthias/vcs/github/rust/library/proc_macro)
    Checking unicode-width v0.1.13
    Checking getopts v0.2.21
    Checking test v0.0.0 (/home/matthias/vcs/github/rust/library/test)
    Checking sysroot v0.0.0 (/home/matthias/vcs/github/rust/library/sysroot)
    Finished `release` profile [optimized + debuginfo] target(s) in 35.62s
Checking stage0 library artifacts (x86_64-unknown-linux-gnu)
   Compiling compiler_builtins v0.1.118
   Compiling libc v0.2.155
   Compiling memchr v2.5.0
   Compiling std v0.0.0 (/home/matthias/vcs/github/rust/library/std)
    Checking alloc v0.0.0 (/home/matthias/vcs/github/rust/library/alloc)
    Checking cfg-if v1.0.0
    Checking adler v1.0.2
    Checking rustc-demangle v0.1.24
    Checking unwind v0.0.0 (/home/matthias/vcs/github/rust/library/unwind)
    Checking rustc-std-workspace-alloc v1.99.0 (/home/matthias/vcs/github/rust/library/rustc-std-workspace-alloc)
    Checking panic_unwind v0.0.0 (/home/matthias/vcs/github/rust/library/panic_unwind)
    Checking panic_abort v0.0.0 (/home/matthias/vcs/github/rust/library/panic_abort)
    Checking gimli v0.29.0
    Checking std_detect v0.1.5 (/home/matthias/vcs/github/rust/library/stdarch/crates/std_detect)
    Checking object v0.36.2
    Checking miniz_oxide v0.7.4
    Checking hashbrown v0.14.5
    Checking addr2line v0.22.0
    Checking rustc-std-workspace-std v1.99.0 (/home/matthias/vcs/github/rust/library/rustc-std-workspace-std)
    Checking proc_macro v0.0.0 (/home/matthias/vcs/github/rust/library/proc_macro)
    Checking unicode-width v0.1.13
    Checking getopts v0.2.21
    Checking test v0.0.0 (/home/matthias/vcs/github/rust/library/test)
    Checking sysroot v0.0.0 (/home/matthias/vcs/github/rust/library/sysroot)
    Finished `release` profile [optimized + debuginfo] target(s) in 7.67s
Linting stage0 compiler {rustc-main, rustc_abi, rustc_arena, rustc_ast, rustc_ast_ir, rustc_ast_lowering, rustc_ast_passes, rustc_ast_pretty, rustc_attr, rustc_baked_icu_data, rustc_borrowck, rustc_builtin_macros, rustc_codegen_llvm, rustc_codegen_ssa, rustc_const_eval, rustc_data_structures, rustc_driver, rustc_driver_impl, rustc_error_codes, rustc_error_messages, rustc_errors, rustc_expand, rustc_feature, rustc_fluent_macro, rustc_fs_util, rustc_graphviz, rustc_hir, rustc_hir_analysis, rustc_hir_pretty, rustc_hir_typeck, rustc_incremental, rustc_index, rustc_index_macros, rustc_infer, rustc_interface, rustc_lexer, rustc_lint, rustc_lint_defs, rustc_llvm, rustc_log, rustc_macros, rustc_metadata, rustc_middle, rustc_mir_build, rustc_mir_dataflow, rustc_mir_transform, rustc_monomorphize, rustc_next_trait_solver, rustc_parse, rustc_parse_format, rustc_passes, rustc_pattern_analysis, rustc_privacy, rustc_query_impl, rustc_query_system, rustc_resolve, rustc_sanitizers, rustc_serialize, rustc_session, rustc_smir, rustc_span, rustc_symbol_mangling, rustc_target, rustc_trait_selection, rustc_traits, rustc_transmute, rustc_ty_utils, rustc_type_ir, rustc_type_ir_macros, stable_mir} (x86_64-unknown-linux-gnu)
    Checking cfg-if v1.0.0
    Checking once_cell v1.19.0
    Checking stable_deref_trait v1.2.0
    Checking smallvec v1.13.2
    Checking either v1.12.0
    Checking zerocopy v0.7.34
    Checking allocator-api2 v0.2.18
    Checking equivalent v1.0.1
    Checking bitflags v2.5.0
    Checking libc v0.2.155
    Checking crossbeam-utils v0.8.20
    Checking memchr v2.5.0
    Checking log v0.4.21
    Checking scopeguard v1.2.0
    Checking typenum v1.17.0
    Checking pin-project-lite v0.2.14
    Checking rustc-hash v1.1.0
    Checking zerofrom v0.1.4
    Checking thin-vec v0.2.13
    Checking lock_api v0.4.12
    Checking linux-raw-sys v0.4.14
    Checking arrayvec v0.7.4
    Checking tracing-core v0.1.30
    Checking psm v0.1.21
    Checking fastrand v2.1.0
    Checking yoke v0.7.4
    Checking ena v0.14.3
    Checking rustc_arena v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_arena)
    Checking elsa v1.7.1
    Checking cpufeatures v0.2.12
    Checking unicode-width v0.1.13
    Checking ahash v0.8.11
    Checking rustc_graphviz v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_graphviz)
    Checking itoa v1.0.11
    Checking rustc-stable-hash v0.1.0
    Checking scoped-tls v1.0.1
    Checking ppv-lite86 v0.2.17
    Checking crc32fast v1.4.2
    Checking zerovec v0.10.2
    Checking writeable v0.5.5
    Checking crossbeam-epoch v0.9.18
    Checking crossbeam-channel v0.5.13
    Checking litemap v0.7.3
    Checking serde v1.0.203
    Checking unicode-xid v0.2.4
    Checking unicode-properties v0.1.1
    Checking tracing v0.1.37
    Checking rustix v0.38.34
    Checking wasmparser v0.214.0
    Checking hashbrown v0.14.5
    Checking icu_locid_transform_data v1.5.0
    Checking ryu v1.0.18
    Checking thiserror v1.0.61
    Checking rustc_lexer v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_lexer)
    Checking regex-automata v0.2.0
    Checking generic-array v0.14.7
    Checking type-map v0.5.0
    Checking rustc_fs_util v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_fs_util)
    Checking self_cell v1.0.4
    Checking crossbeam-deque v0.8.5
    Checking icu_list_data v1.5.0
    Checking fluent-syntax v0.11.1
    Checking odht v0.3.1
    Checking self_cell v0.10.3
    Checking itertools v0.12.1
    Checking anstyle v1.0.7
    Checking rustc_error_codes v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_error_codes)
    Checking termcolor v1.4.1
    Checking getopts v0.2.21
    Checking memoffset v0.9.1
    Checking bitflags v1.3.2
    Checking datafrog v2.0.1
    Checking rustc_apfloat v0.2.0+llvm-462a31f5a5ab
    Checking field-offset v0.3.6
    Checking annotate-snippets v0.10.2
    Checking tinyvec_macros v0.1.1
    Checking aho-corasick v1.1.3
    Checking regex-syntax v0.7.5
    Checking static_assertions v1.1.0
    Checking tinyvec v1.6.0
    Checking adler v1.0.2
    Checking byteorder v1.5.0
    Checking block-buffer v0.10.4
    Checking crypto-common v0.1.6
    Checking polonius-engine v0.13.0
    Checking miniz_oxide v0.7.4
    Checking unicode-script v0.5.6
    Checking num_cpus v1.16.0
    Checking parking_lot_core v0.9.10
    Checking tinystr v0.7.6
    Checking digest v0.10.7
    Checking perf-event-open-sys v3.0.0
    Checking memmap2 v0.2.3
    Checking rustc-rayon-core v0.5.0
    Checking parking_lot v0.12.3
    Checking jobserver v0.1.31
    Checking stacker v0.1.15
    Checking getrandom v0.2.15
    Checking sha2 v0.10.8
    Checking md-5 v0.10.6
    Checking sha1 v0.10.6
    Checking unic-langid-impl v0.9.5
    Checking measureme v11.0.1
    Checking icu_locid v1.5.0
    Checking rand_core v0.6.4
    Checking termize v0.1.1
    Checking snap v1.1.1
    Checking flate2 v1.0.30
    Checking libloading v0.8.3
    Checking unic-langid-macros v0.9.5
    Checking rand_chacha v0.3.1
    Checking rand_xoshiro v0.6.0
    Checking unic-langid v0.9.5
    Checking regex-syntax v0.6.29
    Checking unicode-normalization v0.1.23
    Checking rustc-rayon v0.5.0
    Checking fluent-langneg v0.13.0
    Checking intl_pluralrules v7.0.2
    Checking intl-memoizer v0.5.2
    Checking rustc-demangle v0.1.24
    Checking rand v0.8.5
    Checking lazy_static v1.5.0
    Checking punycode v0.4.1
    Checking tempfile v3.10.1
    Checking leb128 v0.2.5
    Checking overload v0.1.1
    Checking sharded-slab v0.1.7
    Checking unicase v2.7.0
    Checking wasm-encoder v0.210.0
    Checking thread_local v1.1.8
    Checking nu-ansi-term v0.46.0
    Checking icu_provider v1.5.0
    Checking fluent-bundle v0.15.3
    Checking pathdiff v0.2.1
    Checking cc v1.0.99
    Checking pulldown-cmark-escape v0.11.0
    Checking rustc_llvm v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_llvm)
    Checking tracing-log v0.2.0
    Checking unicode-security v0.1.1
    Checking powerfmt v0.2.0
    Checking pulldown-cmark v0.11.0
    Checking nu-ansi-term v0.50.0
    Checking nix v0.28.0
    Checking deranged v0.3.11
    Checking icu_locid_transform v1.5.0
    Checking time-core v0.1.2
    Checking num-conv v0.1.0
    Checking twox-hash v1.6.3
    Checking shlex v1.3.0
    Checking regex-automata v0.3.7
    Checking ruzstd v0.5.0
    Checking serde_json v1.0.117
    Checking gsgdt v0.1.2
    Checking stable_mir v0.1.0-preview (/home/matthias/vcs/github/rust/compiler/stable_mir)
    Checking icu_list v1.5.0
    Checking icu_provider_adapters v1.5.0
    Checking time v0.3.36
    Checking ctrlc v3.4.4
    Checking regex-automata v0.1.10
    Checking indexmap v2.4.0
    Checking rustc_baked_icu_data v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_baked_icu_data)
    Checking matchers v0.1.0
    Checking rustc_serialize v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_serialize)
    Checking object v0.36.2
    Checking object v0.32.2
    Checking gimli v0.28.1
    Checking regex v1.9.4
    Checking rustc_index v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_index)
    Checking tracing-subscriber v0.3.18
    Checking rustc_data_structures v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_data_structures)
    Checking rustc_parse_format v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_parse_format)
    Checking tracing-tree v0.3.1
    Checking rustc_log v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_log)
    Checking rustc_span v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_span)
    Checking rustc_abi v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_abi)
    Checking thorin-dwp v0.7.0
    Checking ar_archive_writer v0.4.0
    Checking rustc_ast_ir v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_ast_ir)
    Checking rustc_feature v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_feature)
    Checking rustc_error_messages v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_error_messages)
    Checking rustc_ast v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_ast)
    Checking rustc_type_ir v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_type_ir)
    Checking rustc_target v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_target)
warning: useless conversion to the same type: `ast::StaticItem`
    --> compiler/rustc_ast/src/ast.rs:3467:43
     |
3467 |                 ItemKind::Static(Box::new(static_foreign_item.into()))
     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `static_foreign_item`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
     = note: `-D clippy::useless-conversion` implied by `-D warnings`
     = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: useless conversion to the same type: `ast::StaticItem`
    --> compiler/rustc_ast/src/ast.rs:3482:50
     |
3482 |                 ForeignItemKind::Static(Box::new(static_item.into()))
     |                                                  ^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `static_item`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: `rustc_ast` (lib) generated 2 warnings (run `cargo clippy --fix --lib -p rustc_ast` to apply 2 suggestions)
    Checking rustc_ast_pretty v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_ast_pretty)
    Checking rustc_next_trait_solver v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_next_trait_solver)
warning: useless conversion to the same type: `impl std::iter::Iterator<Item = <I as rustc_type_ir::Interner>::DefId>`
   --> compiler/rustc_next_trait_solver/src/solve/trait_goals.rs:878:17
    |
878 | /                 elaborate::supertrait_def_ids(self.cx(), principal_def_id)
879 | |                     .into_iter()
    | |________________________________^ help: consider removing `.into_iter()`: `elaborate::supertrait_def_ids(self.cx(), principal_def_id)`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
    = note: `-D clippy::useless-conversion` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: `rustc_next_trait_solver` (lib) generated 1 warning (run `cargo clippy --fix --lib -p rustc_next_trait_solver` to apply 1 suggestion)
    Checking rustc_hir v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_hir)
    Checking rustc_lint_defs v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_lint_defs)
    Checking rustc_hir_pretty v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_hir_pretty)
    Checking rustc_errors v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_errors)
warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
   --> compiler/rustc_errors/src/diagnostic.rs:709:20
    |
709 |         msg.extend(expected.0.into_iter());
    |                    ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing the `.into_iter()`: `expected.0`
    |
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
   --> /home/matthias/vcs/github/rust/library/core/src/iter/traits/collect.rs:450:18
    |
450 |     fn extend<T: IntoIterator<Item = A>>(&mut self, iter: T);
    |                  ^^^^^^^^^^^^^^^^^^^^^^
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
    = note: `-D clippy::useless-conversion` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
   --> compiler/rustc_errors/src/diagnostic.rs:712:20
    |
712 |         msg.extend(found.0.into_iter());
    |                    ^^^^^^^^^^^^^^^^^^^ help: consider removing the `.into_iter()`: `found.0`
    |
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
   --> /home/matthias/vcs/github/rust/library/core/src/iter/traits/collect.rs:450:18
    |
450 |     fn extend<T: IntoIterator<Item = A>>(&mut self, iter: T);
    |                  ^^^^^^^^^^^^^^^^^^^^^^
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: `rustc_errors` (lib) generated 2 warnings (run `cargo clippy --fix --lib -p rustc_errors` to apply 2 suggestions)
    Checking rustc_session v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_session)
    Checking rustc_attr v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_attr)
    Checking rustc_query_system v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_query_system)
    Checking rustc_parse v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_parse)
    Checking rustc_middle v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_middle)
warning: useless conversion to the same type: `rustc_ast::Recovered`
    --> compiler/rustc_parse/src/parser/item.rs:1589:58
     |
1589 |                 VariantData::Struct { fields, recovered: recovered.into() }
     |                                                          ^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `recovered`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
     = note: `-D clippy::useless-conversion` implied by `-D warnings`
     = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: useless conversion to the same type: `rustc_ast::Recovered`
    --> compiler/rustc_parse/src/parser/item.rs:1673:58
     |
1673 |                 VariantData::Struct { fields, recovered: recovered.into() }
     |                                                          ^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `recovered`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `rustc_ast::Recovered`
    --> compiler/rustc_parse/src/parser/item.rs:1685:54
     |
1685 |             VariantData::Struct { fields, recovered: recovered.into() }
     |                                                      ^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `recovered`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `rustc_ast::Recovered`
    --> compiler/rustc_parse/src/parser/item.rs:1714:54
     |
1714 |             VariantData::Struct { fields, recovered: recovered.into() }
     |                                                      ^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `recovered`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: useless conversion to the same type: `rustc_ast::Recovered`
    --> compiler/rustc_parse/src/parser/item.rs:1721:54
     |
1721 |             VariantData::Struct { fields, recovered: recovered.into() }
     |                                                      ^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `recovered`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: `rustc_parse` (lib) generated 5 warnings (run `cargo clippy --fix --lib -p rustc_parse` to apply 5 suggestions)
    Checking rustc_ast_passes v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_ast_passes)
    Checking rustc_expand v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_expand)
    Checking rustc_builtin_macros v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_builtin_macros)
warning: useless conversion to the same type: `rustc_ast::BinOpKind`
    --> compiler/rustc_middle/src/ty/print/pretty.rs:1529:45
     |
1529 |                     AssocOp::from_ast_binop(binop.to_hir_binop().into()).precedence()
     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `binop.to_hir_binop()`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
     = note: `-D clippy::useless-conversion` implied by `-D warnings`
     = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: useless conversion to the same type: `mir::interpret::error::ErrorHandled`
   --> compiler/rustc_middle/src/ty/consts.rs:387:51
    |
387 |                     Err(err) => Err(Either::Right(err.into())),
    |                                                   ^^^^^^^^^^ help: consider removing `.into()`: `err`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: `rustc_middle` (lib) generated 2 warnings (run `cargo clippy --fix --lib -p rustc_middle` to apply 2 suggestions)
    Checking rustc_infer v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_infer)
    Checking rustc_mir_dataflow v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_mir_dataflow)
    Checking rustc_metadata v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_metadata)
    Checking rustc_pattern_analysis v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_pattern_analysis)
    Checking rustc_symbol_mangling v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_symbol_mangling)
    Checking rustc_incremental v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_incremental)
    Checking rustc_monomorphize v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_monomorphize)
    Checking rustc_ast_lowering v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_ast_lowering)
    Checking rustc_query_impl v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_query_impl)
    Checking rustc_smir v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_smir)
warning: useless conversion to the same type: `rustc_middle::ty::Const<'_>`
   --> compiler/rustc_symbol_mangling/src/v0.rs:385:25
    |
385 |                         ty::Const::from_bool(self.tcx, include_end).into(),
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `ty::Const::from_bool(self.tcx, include_end)`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
    = note: `-D clippy::useless-conversion` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: `rustc_symbol_mangling` (lib) generated 1 warning (run `cargo clippy --fix --lib -p rustc_symbol_mangling` to apply 1 suggestion)
    Checking rustc_codegen_ssa v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_codegen_ssa)
    Checking rustc_resolve v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_resolve)
    Checking rustc_transmute v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_transmute)
    Checking rustc_trait_selection v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_trait_selection)
warning: useless conversion to the same type: `rustc_middle::ty::Term<'_>`
   --> compiler/rustc_trait_selection/src/traits/project.rs:409:28
    |
409 |             return Ok(Some(result.value.into()));
    |                            ^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `result.value`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
    = note: `-D clippy::useless-conversion` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: useless conversion to the same type: `rustc_middle::ty::Term<'_>`
   --> compiler/rustc_trait_selection/src/traits/project.rs:479:21
    |
479 |             Ok(Some(result.value.into()))
    |                     ^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `result.value`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: `rustc_trait_selection` (lib) generated 2 warnings (run `cargo clippy --fix --lib -p rustc_trait_selection` to apply 2 suggestions)
    Checking rustc_lint v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_lint)
    Checking rustc_ty_utils v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_ty_utils)
    Checking rustc_const_eval v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_const_eval)
    Checking rustc_sanitizers v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_sanitizers)
    Checking rustc_hir_analysis v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_hir_analysis)
    Checking rustc_traits v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_traits)
    Checking rustc_borrowck v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_borrowck)
    Checking rustc_codegen_llvm v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_codegen_llvm)
    Checking rustc_privacy v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_privacy)
    Checking rustc_passes v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_passes)
warning: useless conversion to the same type: `interpret::place::MPlaceTy<'_>`
  --> compiler/rustc_const_eval/src/const_eval/eval_queries.rs:81:10
   |
81 |         &ret.clone().into(),
   |          ^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `ret.clone()`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
   = note: `-D clippy::useless-conversion` implied by `-D warnings`
   = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: useless conversion to the same type: `interpret::place::MPlaceTy<'_, <M as interpret::machine::Machine<'_>>::Provenance>`
   --> compiler/rustc_const_eval/src/interpret/call.rs:857:14
    |
857 |             &ret.into(),
    |              ^^^^^^^^^^ help: consider removing `.into()`: `ret`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

    Checking rustc_mir_build v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_mir_build)
warning: `rustc_const_eval` (lib) generated 2 warnings (run `cargo clippy --fix --lib -p rustc_const_eval` to apply 2 suggestions)
warning: useless conversion to the same type: `usize`
    --> compiler/rustc_hir_analysis/src/check/wfcheck.rs:1604:32
     |
1604 |                     param_idx: idx.try_into().unwrap(),
     |                                ^^^^^^^^^^^^^^
     |
     = help: consider removing `.try_into()`
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
     = note: `-D clippy::useless-conversion` implied by `-D warnings`
     = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: useless conversion to the same type: `usize`
    --> compiler/rustc_hir_analysis/src/check/wfcheck.rs:1613:70
     |
1613 |             Some(WellFormedLoc::Param { function: def_id, param_idx: idx.try_into().unwrap() }),
     |                                                                      ^^^^^^^^^^^^^^
     |
     = help: consider removing `.try_into()`
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion

warning: `rustc_hir_analysis` (lib) generated 2 warnings
    Checking rustc_hir_typeck v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_hir_typeck)
    Checking rustc_mir_transform v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_mir_transform)
warning: useless conversion to the same type: `usize`
    --> compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:2536:35
     |
2536 |                 idxs_matched.push(other_idx.into());
     |                                   ^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `other_idx`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
     = note: `-D clippy::useless-conversion` implied by `-D warnings`
     = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

warning: `rustc_hir_typeck` (lib) generated 1 warning (run `cargo clippy --fix --lib -p rustc_hir_typeck` to apply 1 suggestion)
    Checking rustc_interface v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_interface)
    Checking rustc_driver_impl v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_driver_impl)
    Checking rustc_driver v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc_driver)
    Checking rustc-main v0.0.0 (/home/matthias/vcs/github/rust/compiler/rustc)
    Finished `release` profile [optimized + debuginfo] target(s) in 1m 22s
Build completed successfully in 0:02:07

@matthiaskrgr
Copy link
Member

looks a bit like a mix of
clippy::useless_converison let x: A = A.into()
clippy::unneccessary_cast 1_u32 as u32
clippy::redundant_clone / unnecessary_to_owned let x: String= format!("a").to_string()

@rust-log-analyzer

This comment has been minimized.

@traviscross traviscross added the S-experimental Status: Ongoing experiment that does not require reviewing and won't be merged in its current state. label Aug 18, 2024
@estebank
Copy link
Contributor Author

@matthiaskrgr I'm trying to gauge how common the root cause of the recent time breakage (a stray identity .into()) is in the ecosystem. clippy::useless_conversion is the right analogue, but that one has the same issue that I partly side-stepped in this PR of being too eager and ignoring cfgs.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@estebank
Copy link
Contributor Author

@bors try

@bors
Copy link
Contributor

bors commented Aug 19, 2024

⌛ Trying commit bd05c40 with merge dd5e794...

bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 19, 2024
[Experimental] `<T as Into<T>>::into` lint

Running crater to see how common that pattern is. The Lint would have to be at most warn-by-default because there are a handful of cases detected that are actually perfectly reasonable (`type` aliases with per-platform `cfg`, or macros) which are now at best half-heartedly handled.

I've detected a handful of cases where we're calling `.into()` unnecessarily in the `rustc` codebase as well, and changed those.
@estebank
Copy link
Contributor Author

(I think that I have enough building that I can run crater on the resulting binary)

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Aug 19, 2024

💔 Test failed - checks-actions

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@@ -733,6 +733,8 @@ lint_reserved_prefix = prefix `{$prefix}` is unknown
.label = unknown prefix
.suggestion = insert whitespace here to avoid this being parsed as a prefix in Rust 2021

lint_self_type_conversion = this conversion is useless `{$source}` to `{$target}`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorrect sentence structure...

Suggested change
lint_self_type_conversion = this conversion is useless `{$source}` to `{$target}`
lint_self_type_conversion = useless conversion to the same type: `{$target}`

(taken from https://github.com/rust-lang/rust-clippy/blob/e5a1ef0795a119a68cbd4cccb41b569206d74d78/clippy_lints/src/useless_conversion.rs#L187)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The lint itself will need to be iterated on. This is all a placeholder so that I can run crater :)

@rust-log-analyzer

This comment has been minimized.

Running crater to see how common that pattern is. The Lint would have to be at most warn-by-default because there are a handful of cases detected that are actually perfectly reasonable (`type` aliases with per-platform `cfg`, or macros) which are now at best half-heartedly handled.

I've detected a handful of cases where we're calling `.into()` unnecessarily in the `rustc` codebase as well, and changed those.
@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-llvm-17 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
------
 > importing cache manifest from ghcr.io/rust-lang/rust-ci-cache:20d3b4d4a2629cbf7865cdbf92fe47512a7c96658c24253a045ff38e8075cd7fb37ca6fcadfa6e6d093333943ad24f6fc4f163ec5b74fd940de9d5bb03eb4d3b:
------
##[endgroup]
Setting extra environment values for docker:  --env ENABLE_GCC_CODEGEN=1 --env GCC_EXEC_PREFIX=/usr/lib/gcc/
[CI_JOB_NAME=x86_64-gnu-llvm-17]
---
sccache: Starting the server...
##[group]Configure the build
configure: processing command line
configure: 
configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--llvm-root=/usr/lib/llvm-17', '--enable-llvm-link-shared', '--set', 'rust.thin-lto-import-instr-limit=10', '--set', 'change-id=99999999', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--set', 'rust.lld=false', '--disable-dist-src', '--release-channel=nightly', '--enable-debug-assertions', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift,gcc', '--set', 'llvm.static-libstdcpp', '--enable-new-symbol-mangling']
configure: target.x86_64-unknown-linux-gnu.llvm-config := /usr/lib/llvm-17/bin/llvm-config
configure: llvm.link-shared     := True
configure: rust.thin-lto-import-instr-limit := 10
configure: change-id            := 99999999
---
  Downloaded boml v0.3.1
   Compiling boml v0.3.1
   Compiling y v0.1.0 (/checkout/compiler/rustc_codegen_gcc/build_system)
    Finished `release` profile [optimized] target(s) in 3.87s
     Running `/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-codegen/x86_64-unknown-linux-gnu/release/y test --use-system-gcc --use-backend gcc --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/cg_gcc --release --mini-tests --std-tests`
Using system GCC
[BUILD] example
[AOT] mini_core_hello_world
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/cg_gcc/mini_core_hello_world
abc
---
    Checking object v0.36.2
    Checking hashbrown v0.14.5
    Checking addr2line v0.22.0
 Documenting std v0.0.0 (/checkout/library/std)
error[E0599]: no method named `kill` found for struct `os::linux::process::InnerPidFd` in the current scope
   |
16 | struct InnerPidFd;
   | ----------------- method `kill` not found for this struct
...
...
64 |         self.inner.kill()
   |                    ^^^^ method not found in `InnerPidFd`

error[E0599]: no method named `wait` found for struct `os::linux::process::InnerPidFd` in the current scope
   |
16 | struct InnerPidFd;
   | ----------------- method `wait` not found for this struct
...
...
75 |         self.inner.wait().map(FromInner::from_inner)
   |                    ^^^^ method not found in `InnerPidFd`

error[E0599]: no method named `try_wait` found for struct `os::linux::process::InnerPidFd` in the current scope
   |
16 | struct InnerPidFd;
   | ----------------- method `try_wait` not found for this struct
...
...
85 |         Ok(self.inner.try_wait()?.map(FromInner::from_inner))
   |                       ^^^^^^^^ method not found in `InnerPidFd`

error[E0599]: no method named `as_inner` found for reference `&os::linux::process::InnerPidFd` in the current scope
    |
111 |         self.as_inner().as_inner().as_raw_fd()
111 |         self.as_inner().as_inner().as_raw_fd()
    |         ----            ^^^^^^^^ method not found in `&InnerPidFd`
    |         |
    |         method `as_inner` is available on `&os::linux::process::PidFd`
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `sys_common::AsInner` defines an item `as_inner`, perhaps you need to implement it
    |
    |
48  | pub trait AsInner<Inner: ?Sized> {


error[E0599]: no method named `into_inner` found for struct `os::linux::process::InnerPidFd` in the current scope
    |
16  | struct InnerPidFd;
    | ----------------- method `into_inner` not found for this struct
...
...
123 |         self.into_inner().into_inner().into_raw_fd()
    |         ----              ^^^^^^^^^^ method not found in `InnerPidFd`
    |         method `into_inner` is available on `os::linux::process::PidFd`
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `sys_common::IntoInner` defines an item `into_inner`, perhaps you need to implement it
    |
61  | pub trait IntoInner<Inner> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^


error[E0599]: no method named `as_inner` found for reference `&os::linux::process::InnerPidFd` in the current scope
    |
129 |         self.as_inner().as_inner().as_fd()
129 |         self.as_inner().as_inner().as_fd()
    |         ----            ^^^^^^^^ method not found in `&InnerPidFd`
    |         |
    |         method `as_inner` is available on `&os::linux::process::PidFd`
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `sys_common::AsInner` defines an item `as_inner`, perhaps you need to implement it
    |
    |
48  | pub trait AsInner<Inner: ?Sized> {


error[E0599]: no method named `into_inner` found for struct `os::linux::process::InnerPidFd` in the current scope
    |
16  | struct InnerPidFd;
    | ----------------- method `into_inner` not found for this struct
...
...
141 |         pid_fd.into_inner().into_inner().into_inner()
    |         ------              ^^^^^^^^^^ method not found in `InnerPidFd`
    |         method `into_inner` is available on `os::linux::process::PidFd`
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `sys_common::IntoInner` defines an item `into_inner`, perhaps you need to implement it
    |
61  | pub trait IntoInner<Inner> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^


error[E0599]: no method named `pread` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:237:36
    |
237 |         self.as_inner().as_inner().pread(bufs, offset)
    |
help: there is a method `read` with a similar name, but with different arguments
   --> std/src/sys/pal/unix/fd.rs:90:5
    |
    |
90  |     pub fn read(&self, buf: &mut [u8]) -> io::Result<usize> {


error[E0599]: no method named `pwrite` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:241:36
    |
241 |         self.as_inner().as_inner().pwrite(bufs, offset)
    |
help: there is a method `write` with a similar name, but with different arguments
   --> std/src/sys/pal/unix/fd.rs:289:5
    |
    |
289 |     pub fn write(&self, buf: &[u8]) -> io::Result<usize> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `tell` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:245:36
    |
245 |         self.as_inner().as_inner().tell()
    |                                    ^^^^ method not found in `&FileDesc`
error[E0599]: no method named `set_flags` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:249:36
    |
    |
249 |         self.as_inner().as_inner().set_flags(flags)
    |                                    ^^^^^^^^^ method not found in `&FileDesc`
error[E0599]: no method named `set_rights` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:253:36
    |
    |
253 |         self.as_inner().as_inner().set_rights(rights, inheriting)
    |                                    ^^^^^^^^^^ method not found in `&FileDesc`
error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_NORMAL`
   --> std/src/os/wasi/fs.rs:258:23
    |
    |
258 |             a if a == wasi::ADVICE_NORMAL.raw() => wasi::ADVICE_NORMAL,
    |                       ^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_NORMAL`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_NORMAL`
error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_NORMAL`
   --> std/src/os/wasi/fs.rs:258:52
    |
258 |             a if a == wasi::ADVICE_NORMAL.raw() => wasi::ADVICE_NORMAL,
    |                                                    ^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_NORMAL`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_SEQUENTIAL`
error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_SEQUENTIAL`
   --> std/src/os/wasi/fs.rs:259:23
    |
259 |             a if a == wasi::ADVICE_SEQUENTIAL.raw() => wasi::ADVICE_SEQUENTIAL,
    |                       ^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_SEQUENTIAL`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_SEQUENTIAL`
error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_SEQUENTIAL`
   --> std/src/os/wasi/fs.rs:259:56
    |
259 |             a if a == wasi::ADVICE_SEQUENTIAL.raw() => wasi::ADVICE_SEQUENTIAL,
    |                                                        ^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_SEQUENTIAL`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_RANDOM`
error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_RANDOM`
   --> std/src/os/wasi/fs.rs:260:23
    |
260 |             a if a == wasi::ADVICE_RANDOM.raw() => wasi::ADVICE_RANDOM,
    |                       ^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_RANDOM`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_RANDOM`
error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_RANDOM`
   --> std/src/os/wasi/fs.rs:260:52
    |
260 |             a if a == wasi::ADVICE_RANDOM.raw() => wasi::ADVICE_RANDOM,
    |                                                    ^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_RANDOM`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_WILLNEED`
   --> std/src/os/wasi/fs.rs:261:23
    |
261 |             a if a == wasi::ADVICE_WILLNEED.raw() => wasi::ADVICE_WILLNEED,
    |                       ^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_WILLNEED`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_WILLNEED`
   --> std/src/os/wasi/fs.rs:261:54
    |
261 |             a if a == wasi::ADVICE_WILLNEED.raw() => wasi::ADVICE_WILLNEED,
    |                                                      ^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_WILLNEED`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_DONTNEED`
   --> std/src/os/wasi/fs.rs:262:23
    |
262 |             a if a == wasi::ADVICE_DONTNEED.raw() => wasi::ADVICE_DONTNEED,
    |                       ^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_DONTNEED`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_DONTNEED`
   --> std/src/os/wasi/fs.rs:262:54
    |
262 |             a if a == wasi::ADVICE_DONTNEED.raw() => wasi::ADVICE_DONTNEED,
    |                                                      ^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_DONTNEED`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_NOREUSE`
   --> std/src/os/wasi/fs.rs:263:23
    |
263 |             a if a == wasi::ADVICE_NOREUSE.raw() => wasi::ADVICE_NOREUSE,
    |                       ^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_NOREUSE`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `wasi::ADVICE_NOREUSE`
   --> std/src/os/wasi/fs.rs:263:53
    |
263 |             a if a == wasi::ADVICE_NOREUSE.raw() => wasi::ADVICE_NOREUSE,
    |                                                     ^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::ADVICE_NOREUSE`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0599]: no method named `advise` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
error[E0599]: no method named `advise` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:272:36
    |
272 |         self.as_inner().as_inner().advise(offset, len, advice)
    |                                    ^^^^^^ method not found in `&FileDesc`
error[E0599]: no method named `allocate` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:276:36
    |
276 |         self.as_inner().as_inner().allocate(offset, len)
276 |         self.as_inner().as_inner().allocate(offset, len)
    |                                    ^^^^^^^^ method not found in `&FileDesc`

error[E0599]: no method named `create_directory` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:280:36
    |
280 |         self.as_inner().as_inner().create_directory(osstr2str(dir.as_ref().as_ref())?)
    |                                    ^^^^^^^^^^^^^^^^ method not found in `&FileDesc`
error[E0599]: no method named `read_link` found for reference `&sys::pal::unix::fs::File` in the current scope
    --> std/src/os/wasi/fs.rs:284:25
     |
284  |         self.as_inner().read_link(path.as_ref())
284  |         self.as_inner().read_link(path.as_ref())
     |                         ^^^^^^^^^
     |
help: there is a method `read_at` with a similar name, but with different arguments
    --> std/src/sys/pal/unix/fs.rs:1252:5
     |
1252 |     pub fn read_at(&self, buf: &mut [u8], offset: u64) -> io::Result<usize> {

error[E0599]: no method named `metadata_at` found for reference `&sys::pal::unix::fs::File` in the current scope
   --> std/src/os/wasi/fs.rs:288:33
    |
    |
288 |         let m = self.as_inner().metadata_at(lookup_flags, path.as_ref())?;
    |
help: there is a method `read_at` with a similar name
    |
    |
288 |         let m = self.as_inner().read_at(lookup_flags, path.as_ref())?;

error[E0599]: no method named `unlink_file` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:293:36
    |
    |
293 |         self.as_inner().as_inner().unlink_file(osstr2str(path.as_ref().as_ref())?)
    |                                    ^^^^^^^^^^^ method not found in `&FileDesc`
error[E0599]: no method named `remove_directory` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:297:36
    |
    |
297 |         self.as_inner().as_inner().remove_directory(osstr2str(path.as_ref().as_ref())?)
    |                                    ^^^^^^^^^^^^^^^^ method not found in `&FileDesc`
error[E0599]: no method named `lookup_flags` found for mutable reference `&mut sys::pal::unix::fs::OpenOptions` in the current scope
   --> std/src/os/wasi/fs.rs:372:29
    |
    |
372 |         self.as_inner_mut().lookup_flags(flags);

error[E0599]: no method named `directory` found for mutable reference `&mut sys::pal::unix::fs::OpenOptions` in the current scope
   --> std/src/os/wasi/fs.rs:377:29
    |
    |
377 |         self.as_inner_mut().directory(dir);

error[E0599]: no method named `dsync` found for mutable reference `&mut sys::pal::unix::fs::OpenOptions` in the current scope
   --> std/src/os/wasi/fs.rs:382:29
    |
    |
382 |         self.as_inner_mut().dsync(enabled);

error[E0599]: no method named `nonblock` found for mutable reference `&mut sys::pal::unix::fs::OpenOptions` in the current scope
   --> std/src/os/wasi/fs.rs:387:29
    |
    |
387 |         self.as_inner_mut().nonblock(enabled);

error[E0599]: no method named `rsync` found for mutable reference `&mut sys::pal::unix::fs::OpenOptions` in the current scope
   --> std/src/os/wasi/fs.rs:392:29
    |
    |
392 |         self.as_inner_mut().rsync(enabled);

error[E0599]: no method named `sync` found for mutable reference `&mut sys::pal::unix::fs::OpenOptions` in the current scope
   --> std/src/os/wasi/fs.rs:397:29
    |
    |
397 |         self.as_inner_mut().sync(enabled);

error[E0599]: no method named `fs_rights_base` found for mutable reference `&mut sys::pal::unix::fs::OpenOptions` in the current scope
   --> std/src/os/wasi/fs.rs:402:29
    |
    |
402 |         self.as_inner_mut().fs_rights_base(rights);

error[E0599]: no method named `fs_rights_inheriting` found for mutable reference `&mut sys::pal::unix::fs::OpenOptions` in the current scope
   --> std/src/os/wasi/fs.rs:407:29
    |
    |
407 |         self.as_inner_mut().fs_rights_inheriting(rights);

error[E0599]: no method named `open_at` found for reference `&sys::pal::unix::fs::File` in the current scope
   --> std/src/os/wasi/fs.rs:412:37
    |
    |
412 |         let inner = file.as_inner().open_at(path.as_ref(), self.as_inner())?;
    |                                     ^^^^^^^ method not found in `&File`
error[E0599]: no method named `as_wasi` found for reference `&sys::pal::unix::fs::FileAttr` in the current scope
   --> std/src/os/wasi/fs.rs:437:25
    |
    |
437 |         self.as_inner().as_wasi().dev
    |                         ^^^^^^^ method not found in `&FileAttr`
error[E0599]: no method named `as_wasi` found for reference `&sys::pal::unix::fs::FileAttr` in the current scope
   --> std/src/os/wasi/fs.rs:440:25
    |
    |
440 |         self.as_inner().as_wasi().ino
    |                         ^^^^^^^ method not found in `&FileAttr`
error[E0599]: no method named `as_wasi` found for reference `&sys::pal::unix::fs::FileAttr` in the current scope
   --> std/src/os/wasi/fs.rs:443:25
    |
    |
443 |         self.as_inner().as_wasi().nlink
    |                         ^^^^^^^ method not found in `&FileAttr`
error[E0599]: no method named `as_wasi` found for reference `&sys::pal::unix::fs::FileAttr` in the current scope
   --> std/src/os/wasi/fs.rs:446:25
    |
    |
446 |         self.as_inner().as_wasi().size
    |                         ^^^^^^^ method not found in `&FileAttr`
error[E0599]: no method named `as_wasi` found for reference `&sys::pal::unix::fs::FileAttr` in the current scope
   --> std/src/os/wasi/fs.rs:449:25
    |
    |
449 |         self.as_inner().as_wasi().atim
    |                         ^^^^^^^ method not found in `&FileAttr`
error[E0599]: no method named `as_wasi` found for reference `&sys::pal::unix::fs::FileAttr` in the current scope
   --> std/src/os/wasi/fs.rs:452:25
    |
    |
452 |         self.as_inner().as_wasi().mtim
    |                         ^^^^^^^ method not found in `&FileAttr`
error[E0599]: no method named `as_wasi` found for reference `&sys::pal::unix::fs::FileAttr` in the current scope
   --> std/src/os/wasi/fs.rs:455:25
    |
    |
455 |         self.as_inner().as_wasi().ctim
    |                         ^^^^^^^ method not found in `&FileAttr`
error[E0433]: failed to resolve: could not resolve path `wasi::FILETYPE_BLOCK_DEVICE`
   --> std/src/os/wasi/fs.rs:480:35
    |
    |
480 |         self.as_inner().bits() == wasi::FILETYPE_BLOCK_DEVICE
    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::FILETYPE_BLOCK_DEVICE`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0599]: no method named `bits` found for reference `&sys::pal::unix::fs::FileType` in the current scope
error[E0599]: no method named `bits` found for reference `&sys::pal::unix::fs::FileType` in the current scope
   --> std/src/os/wasi/fs.rs:480:25
    |
480 |         self.as_inner().bits() == wasi::FILETYPE_BLOCK_DEVICE
    |
help: there is a method `is` with a similar name, but with different arguments
   --> std/src/sys/pal/unix/fs.rs:637:5
    |
    |
637 |     pub fn is(&self, mode: mode_t) -> bool {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0433]: failed to resolve: could not resolve path `wasi::FILETYPE_CHARACTER_DEVICE`
   --> std/src/os/wasi/fs.rs:483:35
    |
483 |         self.as_inner().bits() == wasi::FILETYPE_CHARACTER_DEVICE
    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::FILETYPE_CHARACTER_DEVICE`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0599]: no method named `bits` found for reference `&sys::pal::unix::fs::FileType` in the current scope
error[E0599]: no method named `bits` found for reference `&sys::pal::unix::fs::FileType` in the current scope
   --> std/src/os/wasi/fs.rs:483:25
    |
483 |         self.as_inner().bits() == wasi::FILETYPE_CHARACTER_DEVICE
    |
help: there is a method `is` with a similar name, but with different arguments
   --> std/src/sys/pal/unix/fs.rs:637:5
    |
    |
637 |     pub fn is(&self, mode: mode_t) -> bool {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0433]: failed to resolve: could not resolve path `wasi::FILETYPE_SOCKET_DGRAM`
   --> std/src/os/wasi/fs.rs:486:35
    |
486 |         self.as_inner().bits() == wasi::FILETYPE_SOCKET_DGRAM
    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::FILETYPE_SOCKET_DGRAM`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0599]: no method named `bits` found for reference `&sys::pal::unix::fs::FileType` in the current scope
error[E0599]: no method named `bits` found for reference `&sys::pal::unix::fs::FileType` in the current scope
   --> std/src/os/wasi/fs.rs:486:25
    |
486 |         self.as_inner().bits() == wasi::FILETYPE_SOCKET_DGRAM
    |
help: there is a method `is` with a similar name, but with different arguments
   --> std/src/sys/pal/unix/fs.rs:637:5
    |
    |
637 |     pub fn is(&self, mode: mode_t) -> bool {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0433]: failed to resolve: could not resolve path `wasi::FILETYPE_SOCKET_STREAM`
   --> std/src/os/wasi/fs.rs:489:35
    |
489 |         self.as_inner().bits() == wasi::FILETYPE_SOCKET_STREAM
    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `wasi::FILETYPE_SOCKET_STREAM`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0599]: no method named `bits` found for reference `&sys::pal::unix::fs::FileType` in the current scope
error[E0599]: no method named `bits` found for reference `&sys::pal::unix::fs::FileType` in the current scope
   --> std/src/os/wasi/fs.rs:489:25
    |
489 |         self.as_inner().bits() == wasi::FILETYPE_SOCKET_STREAM
    |
help: there is a method `is` with a similar name, but with different arguments
   --> std/src/sys/pal/unix/fs.rs:637:5
    |
    |
637 |     pub fn is(&self, mode: mode_t) -> bool {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `link` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:516:34
    |
516 |     old_fd.as_inner().as_inner().link(
    |     -----------------------------^^^^ method not found in `&FileDesc`
error[E0599]: no method named `rename` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:534:34
    |
    |
534 |     old_fd.as_inner().as_inner().rename(
    |
help: there is a method `read` with a similar name, but with different arguments
   --> std/src/sys/pal/unix/fd.rs:90:5
    |
    |
90  |     pub fn read(&self, buf: &mut [u8]) -> io::Result<usize> {

error[E0599]: no method named `symlink` found for reference `&sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/wasi/fs.rs:552:10
    |
---
535 |         self.as_inner().is_symlink_file()
    |                         ^^^^^^^^^^^^^^^
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::fs::FileTypeExt` defines an item `is_symlink_file`, perhaps you need to implement it
   --> std/src/os/windows/fs.rs:517:1
517 | pub trait FileTypeExt: Sealed {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: there is a method `is_symlink` with a similar name
    |
    |
535 |         self.as_inner().is_symlink()
    |                         ~~~~~~~~~~

error[E0599]: no method named `set_created` found for mutable reference `&mut sys::pal::unix::fs::FileTimes` in the current scope
   --> std/src/os/windows/fs.rs:550:29
    |
550 |         self.as_inner_mut().set_created(t.into_inner());
    |                             ^^^^^^^^^^^ method not found in `&mut FileTimes`
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::fs::FileTimesExt` defines an item `set_created`, perhaps you need to implement it
   --> std/src/os/windows/fs.rs:541:1
    |
541 | pub trait FileTimesExt: Sealed {

error[E0433]: failed to resolve: could not resolve path `sys::fs::symlink_inner`
   --> std/src/os/windows/fs.rs:591:5
    |
    |
591 |     sys::fs::symlink_inner(original.as_ref(), link.as_ref(), false)
    |     ^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::fs::symlink_inner`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `sys::fs::symlink_inner`
error[E0433]: failed to resolve: could not resolve path `sys::fs::symlink_inner`
   --> std/src/os/windows/fs.rs:630:5
    |
630 |     sys::fs::symlink_inner(original.as_ref(), link.as_ref(), true)
    |     ^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::fs::symlink_inner`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::fs::junction_point`
   --> std/src/os/windows/fs.rs:642:5
    |
642 |     sys::fs::junction_point(original.as_ref(), link.as_ref())
    |     ^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::fs::junction_point`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::CloseHandle`
   --> std/src/os/windows/io/handle.rs:178:25
    |
178 |                 let _ = sys::c::CloseHandle(self.0);
    |                         ^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::CloseHandle`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `sys::c::GetCurrentProcess`
error[E0433]: failed to resolve: could not resolve path `sys::c::GetCurrentProcess`
   --> std/src/os/windows/io/handle.rs:219:28
    |
219 |             let cur_proc = sys::c::GetCurrentProcess();
    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::GetCurrentProcess`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::DuplicateHandle`
   --> std/src/os/windows/io/handle.rs:220:13
220 |             sys::c::DuplicateHandle(
220 |             sys::c::DuplicateHandle(
    |             ^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::DuplicateHandle`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `sys::c::BOOL`
error[E0433]: failed to resolve: could not resolve path `sys::c::BOOL`
   --> std/src/os/windows/io/handle.rs:226:28
226 |                 inherit as sys::c::BOOL,
    |                            ^^^^^^^^^^^^ could not resolve path `sys::c::BOOL`
    |
    = note: this error was originally ignored because you are running `rustdoc`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `sys::c::CloseHandle`
   --> std/src/os/windows/io/handle.rs:256:25
    |
256 |                 let _ = sys::c::CloseHandle(self.0);
    |                         ^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::CloseHandle`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0599]: the method `as_handle` exists for reference `&File`, but its trait bounds were not satisfied
   --> std/src/os/windows/io/handle.rs:519:25
519 |         self.as_inner().as_handle()
    |                         ^^^^^^^^^
    |
   ::: std/src/sys/pal/unix/fs.rs:97:1
   ::: std/src/sys/pal/unix/fs.rs:97:1
    |
97  | pub struct File(FileDesc);
    | --------------- doesn't satisfy `_: AsHandle`
    |
note: trait bound `sys::pal::unix::fs::File: os::windows::io::handle::AsHandle` was not satisfied
   --> std/src/os/windows/io/handle.rs:445:9
    |
445 | impl<T: AsHandle + ?Sized> AsHandle for &T {
    |         |
    |         unsatisfied trait bound introduced here
note: the trait `os::windows::io::handle::AsHandle` must be implemented
note: the trait `os::windows::io::handle::AsHandle` must be implemented
   --> std/src/os/windows/io/handle.rs:426:1
426 | pub trait AsHandle {
    | ^^^^^^^^^^^^^^^^^^
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::handle::AsHandle` defines an item `as_handle`, perhaps you need to implement it
   --> std/src/os/windows/io/handle.rs:426:1
426 | pub trait AsHandle {
    | ^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
error[E0308]: mismatched types
   --> std/src/os/windows/io/handle.rs:528:9
    |
527 |     fn from(file: fs::File) -> OwnedHandle {
    |                                ----------- expected `os::windows::io::handle::OwnedHandle` because of return type
528 |         file.into_inner().into_inner().into_inner()
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `OwnedHandle`, found `OwnedFd`
error[E0599]: no method named `into_handle` found for struct `sys::pal::unix::thread::Thread` in the current scope
error[E0599]: no method named `into_handle` found for struct `sys::pal::unix::thread::Thread` in the current scope
   --> std/src/os/windows/io/handle.rs:652:34
    |
652 |         join_handle.into_inner().into_handle().into_inner()
    |
   ::: std/src/sys/pal/unix/thread.rs:37:1
    |
37  | pub struct Thread {
37  | pub struct Thread {
    | ----------------- method `into_handle` not found for this struct
    |
help: there is a method `into_id` with a similar name
    |
652 |         join_handle.into_inner().into_id().into_inner()

error[E0599]: no method named `as_raw_handle` found for reference `&sys::pal::unix::fs::File` in the current scope
  --> std/src/os/windows/io/raw.rs:97:25
   |
   |
97 |         self.as_inner().as_raw_handle() as RawHandle
   |
   = help: items from traits can only be used if the trait is implemented and in scope
   = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::raw::AsRawHandle` defines an item `as_raw_handle`, perhaps you need to implement it
  --> std/src/os/windows/io/raw.rs:22:1
22 | pub trait AsRawHandle {
   | ^^^^^^^^^^^^^^^^^^^^^
help: there is a method `as_raw_fd` with a similar name
   |
   |
97 |         self.as_inner().as_raw_fd() as RawHandle

error[E0599]: no method named `into_raw_handle` found for struct `sys::pal::unix::fs::File` in the current scope
   --> std/src/os/windows/io/raw.rs:172:27
    |
---
97  | pub struct File(FileDesc);
    | --------------- method `into_raw_handle` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::raw::IntoRawHandle` defines an item `into_raw_handle`, perhaps you need to implement it
   --> std/src/os/windows/io/raw.rs:78:1
78  | pub trait IntoRawHandle {
    | ^^^^^^^^^^^^^^^^^^^^^^^
help: there is a method `into_raw_fd` with a similar name
    |
    |
172 |         self.into_inner().into_raw_fd() as *mut _

error[E0599]: no method named `as_raw_socket` found for reference `&sys::pal::unix::net::Socket` in the current scope
   --> std/src/os/windows/io/raw.rs:241:34
    |
    |
241 |         self.as_inner().socket().as_raw_socket()
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::raw::AsRawSocket` defines an item `as_raw_socket`, perhaps you need to implement it
   --> std/src/os/windows/io/raw.rs:178:1
178 | pub trait AsRawSocket {
    | ^^^^^^^^^^^^^^^^^^^^^
help: there is a method `as_raw_fd` with a similar name
    |
    |
241 |         self.as_inner().socket().as_raw_fd()

error[E0599]: no method named `as_raw_socket` found for reference `&sys::pal::unix::net::Socket` in the current scope
   --> std/src/os/windows/io/raw.rs:248:34
    |
    |
248 |         self.as_inner().socket().as_raw_socket()
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::raw::AsRawSocket` defines an item `as_raw_socket`, perhaps you need to implement it
   --> std/src/os/windows/io/raw.rs:178:1
178 | pub trait AsRawSocket {
    | ^^^^^^^^^^^^^^^^^^^^^
help: there is a method `as_raw_fd` with a similar name
    |
    |
248 |         self.as_inner().socket().as_raw_fd()

error[E0599]: no method named `as_raw_socket` found for reference `&sys::pal::unix::net::Socket` in the current scope
   --> std/src/os/windows/io/raw.rs:255:34
    |
    |
255 |         self.as_inner().socket().as_raw_socket()
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::raw::AsRawSocket` defines an item `as_raw_socket`, perhaps you need to implement it
   --> std/src/os/windows/io/raw.rs:178:1
178 | pub trait AsRawSocket {
    | ^^^^^^^^^^^^^^^^^^^^^
help: there is a method `as_raw_fd` with a similar name
    |
    |
255 |         self.as_inner().socket().as_raw_fd()

error[E0599]: no method named `into_raw_socket` found for struct `sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/windows/io/raw.rs:294:54
    |
    |
294 |         self.into_inner().into_socket().into_inner().into_raw_socket()
    |
   ::: std/src/sys/pal/unix/fd.rs:30:1
    |
    |
30  | pub struct FileDesc(OwnedFd);
    | ------------------- method `into_raw_socket` not found for this struct
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::raw::IntoRawSocket` defines an item `into_raw_socket`, perhaps you need to implement it
   --> std/src/os/windows/io/raw.rs:222:1
222 | pub trait IntoRawSocket {
    | ^^^^^^^^^^^^^^^^^^^^^^^
help: there is a method `into_raw_fd` with a similar name
    |
    |
294 |         self.into_inner().into_socket().into_inner().into_raw_fd()

error[E0599]: no method named `into_raw_socket` found for struct `sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/windows/io/raw.rs:302:54
    |
    |
302 |         self.into_inner().into_socket().into_inner().into_raw_socket()
    |
   ::: std/src/sys/pal/unix/fd.rs:30:1
    |
    |
30  | pub struct FileDesc(OwnedFd);
    | ------------------- method `into_raw_socket` not found for this struct
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::raw::IntoRawSocket` defines an item `into_raw_socket`, perhaps you need to implement it
   --> std/src/os/windows/io/raw.rs:222:1
222 | pub trait IntoRawSocket {
    | ^^^^^^^^^^^^^^^^^^^^^^^
help: there is a method `into_raw_fd` with a similar name
    |
    |
302 |         self.into_inner().into_socket().into_inner().into_raw_fd()

error[E0599]: no method named `into_raw_socket` found for struct `sys::pal::unix::fd::FileDesc` in the current scope
   --> std/src/os/windows/io/raw.rs:310:54
    |
    |
310 |         self.into_inner().into_socket().into_inner().into_raw_socket()
    |
   ::: std/src/sys/pal/unix/fd.rs:30:1
    |
    |
30  | pub struct FileDesc(OwnedFd);
    | ------------------- method `into_raw_socket` not found for this struct
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::io::raw::IntoRawSocket` defines an item `into_raw_socket`, perhaps you need to implement it
   --> std/src/os/windows/io/raw.rs:222:1
222 | pub trait IntoRawSocket {
    | ^^^^^^^^^^^^^^^^^^^^^^^
help: there is a method `into_raw_fd` with a similar name
    |
    |
310 |         self.into_inner().into_socket().into_inner().into_raw_fd()


error[E0433]: failed to resolve: could not resolve path `sys::c::SetHandleInformation`
  --> std/src/os/windows/io/socket.rs:93:13
93 |             sys::c::SetHandleInformation(
93 |             sys::c::SetHandleInformation(
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::SetHandleInformation`
   = note: this error was originally ignored because you are running `rustdoc`
   = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::HANDLE`
  --> std/src/os/windows/io/socket.rs:94:41
   |
94 |                 self.as_raw_socket() as sys::c::HANDLE,
   |                                         ^^^^^^^^^^^^^^ could not resolve path `sys::c::HANDLE`
   = note: this error was originally ignored because you are running `rustdoc`
   = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::HANDLE_FLAG_INHERIT`
  --> std/src/os/windows/io/socket.rs:95:17
95 |                 sys::c::HANDLE_FLAG_INHERIT,
95 |                 sys::c::HANDLE_FLAG_INHERIT,
   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::HANDLE_FLAG_INHERIT`
   = note: this error was originally ignored because you are running `rustdoc`
   = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSAPROTOCOL_INFOW`
   --> std/src/os/windows/io/socket.rs:113:47
    |
113 |         let mut info = unsafe { mem::zeroed::<sys::c::WSAPROTOCOL_INFOW>() };
    |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSAPROTOCOL_INFOW`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSADuplicateSocketW`
   --> std/src/os/windows/io/socket.rs:115:13
    |
115 |             sys::c::WSADuplicateSocketW(
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSADuplicateSocketW`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `sys::c::SOCKET`
---
    |
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `sys::c::GetCurrentProcessId`
   --> std/src/os/windows/io/socket.rs:117:17
    |
117 |                 sys::c::GetCurrentProcessId(),
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::GetCurrentProcessId`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSASocketW`
   --> std/src/os/windows/io/socket.rs:123:13
    |
123 |             sys::c::WSASocketW(
    |             ^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSASocketW`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSA_FLAG_OVERLAPPED`
   --> std/src/os/windows/io/socket.rs:129:17
    |
129 |                 sys::c::WSA_FLAG_OVERLAPPED | sys::c::WSA_FLAG_NO_HANDLE_INHERIT,
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSA_FLAG_OVERLAPPED`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSA_FLAG_NO_HANDLE_INHERIT`
   --> std/src/os/windows/io/socket.rs:129:47
    |
129 |                 sys::c::WSA_FLAG_OVERLAPPED | sys::c::WSA_FLAG_NO_HANDLE_INHERIT,
    |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSA_FLAG_NO_HANDLE_INHERIT`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `sys::c::INVALID_SOCKET`
error[E0433]: failed to resolve: could not resolve path `sys::c::INVALID_SOCKET`
   --> std/src/os/windows/io/socket.rs:133:22
    |
133 |         if socket != sys::c::INVALID_SOCKET {
    |                      ^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::INVALID_SOCKET`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSAGetLastError`
   --> std/src/os/windows/io/socket.rs:136:34
    |
136 |             let error = unsafe { sys::c::WSAGetLastError() };
    |                                  ^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSAGetLastError`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSAEPROTOTYPE`
   --> std/src/os/windows/io/socket.rs:138:25
    |
138 |             if error != sys::c::WSAEPROTOTYPE && error != sys::c::WSAEINVAL {
    |                         ^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSAEPROTOTYPE`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSAEINVAL`
   --> std/src/os/windows/io/socket.rs:138:59
    |
138 |             if error != sys::c::WSAEPROTOTYPE && error != sys::c::WSAEINVAL {
    |                                                           ^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSAEINVAL`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSASocketW`
   --> std/src/os/windows/io/socket.rs:143:17
    |
143 |                 sys::c::WSASocketW(
    |                 ^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSASocketW`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error


error[E0433]: failed to resolve: could not resolve path `sys::c::WSA_FLAG_OVERLAPPED`
   --> std/src/os/windows/io/socket.rs:149:21
    |
149 |                     sys::c::WSA_FLAG_OVERLAPPED,
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not resolve path `sys::c::WSA_FLAG_OVERLAPPED`
    = note: this error was originally ignored because you are running `rustdoc`
    = note: try running again with `rustc` or `cargo check` and you may get a more detailed error

error[E0433]: failed to resolve: could not resolve path `sys::c::INVALID_SOCKET`
---

error[E0599]: no method named `handle` found for reference `&sys::pal::unix::process::process_inner::Process` in the current scope
  --> std/src/os/windows/process.rs:39:25
   |
39 |         self.as_inner().handle().as_raw_handle() as *mut _
   |                         ^^^^^^ method not found in `&Process`
error[E0599]: no method named `handle` found for reference `&sys::pal::unix::process::process_inner::Process` in the current scope
  --> std/src/os/windows/process.rs:47:25
   |
   |
47 |         self.as_inner().handle().as_handle()
   |                         ^^^^^^ method not found in `&Process`
error[E0599]: no method named `into_handle` found for struct `sys::pal::unix::process::process_inner::Process` in the current scope
   --> std/src/os/windows/process.rs:54:27
    |
    |
54  |         self.into_inner().into_handle().into_raw_handle() as *mut _
    |
   ::: std/src/sys/pal/unix/process/process_unix.rs:877:1
    |
877 | pub struct Process {
877 | pub struct Process {
    | ------------------ method `into_handle` not found for this struct

error[E0599]: no method named `into_handle` found for struct `sys::pal::unix::process::process_inner::Process` in the current scope
   --> std/src/os/windows/process.rs:62:28
    |
62  |         child.into_inner().into_handle().into_inner()
    |
   ::: std/src/sys/pal/unix/process/process_unix.rs:877:1
    |
877 | pub struct Process {
877 | pub struct Process {
    | ------------------ method `into_handle` not found for this struct

error[E0599]: no method named `handle` found for reference `&sys::pal::unix::pipe::AnonPipe` in the current scope
  --> std/src/os/windows/process.rs:70:25
   |
70 |         self.as_inner().handle().as_raw_handle() as *mut _
   |                         ^^^^^^ method not found in `&AnonPipe`
error[E0599]: no method named `handle` found for reference `&sys::pal::unix::pipe::AnonPipe` in the current scope
  --> std/src/os/windows/process.rs:78:25
   |
   |
78 |         self.as_inner().handle().as_raw_handle() as *mut _
   |                         ^^^^^^ method not found in `&AnonPipe`
error[E0599]: no method named `handle` found for reference `&sys::pal::unix::pipe::AnonPipe` in the current scope
  --> std/src/os/windows/process.rs:86:25
   |
   |
86 |         self.as_inner().handle().as_raw_handle() as *mut _
   |                         ^^^^^^ method not found in `&AnonPipe`
error[E0599]: no method named `into_handle` found for struct `sys::pal::unix::pipe::AnonPipe` in the current scope
  --> std/src/os/windows/process.rs:93:27
   |
   |
93 |         self.into_inner().into_handle().into_raw_handle() as *mut _
   |                           ^^^^^^^^^^^ method not found in `AnonPipe`
  ::: std/src/sys/pal/unix/pipe.rs:13:1
   |
13 | pub struct AnonPipe(FileDesc);
   | ------------------- method `into_handle` not found for this struct
   | ------------------- method `into_handle` not found for this struct

error[E0599]: no method named `into_handle` found for struct `sys::pal::unix::pipe::AnonPipe` in the current scope
   --> std/src/os/windows/process.rs:100:27
    |
100 |         self.into_inner().into_handle().into_raw_handle() as *mut _
    |                           ^^^^^^^^^^^ method not found in `AnonPipe`
   ::: std/src/sys/pal/unix/pipe.rs:13:1
    |
13  | pub struct AnonPipe(FileDesc);
    | ------------------- method `into_handle` not found for this struct
    | ------------------- method `into_handle` not found for this struct

error[E0599]: no method named `into_handle` found for struct `sys::pal::unix::pipe::AnonPipe` in the current scope
   --> std/src/os/windows/process.rs:107:27
    |
107 |         self.into_inner().into_handle().into_raw_handle() as *mut _
    |                           ^^^^^^^^^^^ method not found in `AnonPipe`
   ::: std/src/sys/pal/unix/pipe.rs:13:1
    |
13  | pub struct AnonPipe(FileDesc);
    | ------------------- method `into_handle` not found for this struct
    | ------------------- method `into_handle` not found for this struct

error[E0599]: no method named `creation_flags` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
   --> std/src/os/windows/process.rs:376:29
    |
376 |         self.as_inner_mut().creation_flags(flags);
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::process::CommandExt` defines an item `creation_flags`, perhaps you need to implement it
   --> std/src/os/windows/process.rs:174:1
174 | pub trait CommandExt: Sealed {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `show_window` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
error[E0599]: no method named `show_window` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
   --> std/src/os/windows/process.rs:381:29
    |
381 |         self.as_inner_mut().show_window(Some(cmd_show));
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::process::CommandExt` defines an item `show_window`, perhaps you need to implement it
   --> std/src/os/windows/process.rs:174:1
174 | pub trait CommandExt: Sealed {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `force_quotes` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
error[E0599]: no method named `force_quotes` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
   --> std/src/os/windows/process.rs:386:29
    |
386 |         self.as_inner_mut().force_quotes(enabled);
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::process::CommandExt` defines an item `force_quotes`, perhaps you need to implement it
   --> std/src/os/windows/process.rs:174:1
174 | pub trait CommandExt: Sealed {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `raw_arg` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
error[E0599]: no method named `raw_arg` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
   --> std/src/os/windows/process.rs:391:29
    |
391 |         self.as_inner_mut().raw_arg(raw_text.as_ref());
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::process::CommandExt` defines an item `raw_arg`, perhaps you need to implement it
   --> std/src/os/windows/process.rs:174:1
174 | pub trait CommandExt: Sealed {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `raw_attribute` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
error[E0599]: no method named `raw_attribute` found for mutable reference `&mut sys::pal::unix::process::process_common::Command` in the current scope
   --> std/src/os/windows/process.rs:409:38
    |
409 |         unsafe { self.as_inner_mut().raw_attribute(attribute, value) };
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = help: items from traits can only be used if the trait is implemented and in scope
note: `os::windows::process::CommandExt` defines an item `raw_attribute`, perhaps you need to implement it
   --> std/src/os/windows/process.rs:174:1
174 | pub trait CommandExt: Sealed {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `main_thread_handle` found for struct `sys::pal::unix::process::process_inner::Process` in the current scope
---

error[E0599]: no method named `handle` found for reference `&sys::pal::unix::thread::Thread` in the current scope
  --> std/src/os/windows/thread.rs:15:25
   |
15 |         self.as_inner().handle().as_raw_handle() as *mut _
   |                         ^^^^^^ method not found in `&Thread`
error[E0599]: no method named `into_handle` found for struct `sys::pal::unix::thread::Thread` in the current scope
  --> std/src/os/windows/thread.rs:23:27
   |
   |
23 |         self.into_inner().into_handle().into_raw_handle() as *mut _
   |
  ::: std/src/sys/pal/unix/thread.rs:37:1
   |
37 | pub struct Thread {
37 | pub struct Thread {
   | ----------------- method `into_handle` not found for this struct
   |
help: there is a method `into_id` with a similar name
   |
23 |         self.into_inner().into_id().into_raw_handle() as *mut _


error[E0277]: the trait bound `os::linux::process::PidFd: sys_common::FromInner<sys::pal::unix::linux::pidfd::PidFd>` is not satisfied
     |
     |
1211 |                 .map(|fd| <os::PidFd as FromInner<imp::PidFd>>::from_inner(fd))
     |                            ^^^^^^^^^ the trait `sys_common::FromInner<sys::pal::unix::linux::pidfd::PidFd>` is not implemented for `os::linux::process::PidFd`
     |
     = help: the trait `sys_common::FromInner<os::linux::process::InnerPidFd>` is implemented for `os::linux::process::PidFd`
     = help: for that trait implementation, expected `os::linux::process::InnerPidFd`, found `sys::pal::unix::linux::pidfd::PidFd`
Some errors have detailed explanations: E0277, E0308, E0433, E0599.
For more information about an error, try `rustc --explain E0277`.
error: could not document `std`
warning: build failed, waiting for other jobs to finish...
warning: build failed, waiting for other jobs to finish...
Command has failed. Rerun with -v to see more details.
  local time: Thu Aug 22 00:34:39 UTC 2024
  network time: Thu, 22 Aug 2024 00:34:39 GMT
##[error]Process completed with exit code 1.
Post job cleanup.

@bors
Copy link
Contributor

bors commented Aug 28, 2024

☔ The latest upstream changes (presumably #129665) made this pull request unmergeable. Please resolve the merge conflicts.

@alex-semenyuk alex-semenyuk added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Sep 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
O-unix Operating system: Unix-like S-experimental Status: Ongoing experiment that does not require reviewing and won't be merged in its current state. S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants