From 0d30e38d079cab3e361227d0d1563b6e9a2fffad Mon Sep 17 00:00:00 2001 From: John Willard Date: Fri, 19 Aug 2022 16:13:48 -0600 Subject: [PATCH] Squashed commit of the following: commit 0a7d5cd54871d5700ef07aa59952652c81785981 Author: Russell Greene Date: Thu Jun 23 04:03:15 2022 +0000 fix accidental removal commit d418fdb0b1304c9046f0756b2d5b4924a4687476 Author: Russell Greene Date: Wed Jan 26 12:28:08 2022 -0600 add test for null ptr commit 09f0311b1e10b7ee1ce5ccebbddcfb11dd496c57 Author: Russell Greene Date: Wed Jan 26 12:22:04 2022 -0600 fix from_unmanaged not being implemented for C++ types, and add corresponding test commit ba25e4cf3b0640b152cf1e7bf22179086b44e4fd Author: Russell Greene Date: Tue Jan 25 15:02:49 2022 -0600 Check contents of moved string commit 478fb85c8fdfb0591bdc8efaa969036baa05e20a Author: Russell Greene Date: Tue Jan 25 14:56:42 2022 -0600 Add UniquePtr::to_shared and SharedPtr::from_unmanaged commit 1862c5dad56c3da71420c5dca6e80ab788bb193d Author: David Tolnay Date: Wed Jul 6 21:06:51 2022 -0700 Update ui test suite to nightly-2022-07-07 commit 2e1527c83439d694858944ee20b763b46b73f65f Author: David Tolnay Date: Wed Jul 6 07:19:36 2022 -0700 Release 1.0.71 commit 08eef74de39a027d7ae20a68c5325a59bfcfea3e Author: David Tolnay Date: Wed Jul 6 07:19:10 2022 -0700 Lockfile update commit 3cb0d42b3e089aa75682af3190f2213395c9493a Merge: ac898723 0bbc34bc Author: David Tolnay Date: Wed Jul 6 07:17:58 2022 -0700 Merge pull request #1064 from luckyuro/master make #derive before #attr when expand to avoid warning legacy_derive_helpers commit 0bbc34bc251a079071f8cf8ca63a4552e977282a Author: abbform Date: Wed Jul 6 21:58:48 2022 +0800 make #derive before #attr when derive commit ac898723167a8ee9fe820195df4cf941a7124ffb Author: David Tolnay Date: Mon Jul 4 09:56:31 2022 -0700 Release 1.0.70 commit 2a165ef375455d5f574664fa9b99481bd92cf84d Author: David Tolnay Date: Mon Jul 4 09:49:07 2022 -0700 Run quote build script commit c45bd4428e4e0415f705b7e9fd8b34fae7899796 Author: David Tolnay Date: Mon Jul 4 09:46:08 2022 -0700 Lockfile update commit cc81e8cf70da8fbe2520041eb1fb7dda1e3c4f02 Merge: d8892fec 30427e02 Author: David Tolnay Date: Mon Jul 4 09:43:02 2022 -0700 Merge pull request #1062 from dtolnay/attrs Clippy attrs on extern "Rust" blocks commit 30427e0205ef459c26b1418fc2850f034b635608 Author: David Tolnay Date: Mon Jul 4 09:25:21 2022 -0700 Propagate attrs from extern mod onto all contents mod ffi { extern "Rust" { fn repro(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32, g: i32, h: i32) -> bool; } } Before: warning: this function has too many arguments (8/7) --> src/main.rs:5:12 | 5 | fn repro(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32, g: i32, h: i32) -> bool; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(clippy::too_many_arguments)]` on by default = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments After: no lint. commit 66ba9a0a666bb9cc3181c1bcf08a52729d7a0084 Author: David Tolnay Date: Mon Jul 4 09:20:52 2022 -0700 Preserve clippy attrs on extern "Rust" fn mod ffi { extern "Rust" { fn repro(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32, g: i32, h: i32) -> bool; } } Before: warning: this function has too many arguments (8/7) --> src/main.rs:5:12 | 5 | fn repro(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32, g: i32, h: i32) -> bool; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(clippy::too_many_arguments)]` on by default = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments After: no lint. commit d8892fecd32e480b5cc0c91921797b0b18c1555c Author: David Tolnay Date: Fri Jul 1 20:01:03 2022 -0700 Ignore explicit_auto_deref clippy lint error: deref which would be done by auto-deref --> gen/build/src/intern.rs:23:27 | 23 | Some(interned) => *interned, | ^^^^^^^^^ help: try this: `interned` | = note: `-D clippy::explicit-auto-deref` implied by `-D clippy::all` = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref commit 65d50f275f06a3ba6d2139f18c043d8150cfe3fc Author: David Tolnay Date: Fri Jul 1 19:35:47 2022 -0700 Update ui test suite to nightly-2022-07-02 commit 98c5161a7de6401b6e079b254bba6f1278e6a956 Author: David Tolnay Date: Fri Jun 24 00:25:50 2022 -0700 Disable pc-windows-gnu CI for now Currently failing in GitHub Actions with: Compiling demo v0.0.0 (D:\a\cxx\cxx\demo) Finished dev [unoptimized + debuginfo] target(s) in 1m 57s Running `target\debug\demo.exe` error: process didn't exit successfully: `target\debug\demo.exe` (exit code: 0xc0000139, STATUS_ENTRYPOINT_NOT_FOUND) Error: Process completed with exit code 1. commit 5d50b94280b4266bafb335415464fb744e337f53 Author: David Tolnay Date: Fri Jun 17 23:56:34 2022 -0700 Release 1.0.69 commit ad0d6ba6debf79ae85d5cde786fc71ddf4ae2035 Author: David Tolnay Date: Fri Jun 17 23:53:02 2022 -0700 Lockfile update commit 52dfbe177c44663da8a3ae649af77d9828b3d04a Merge: f1d7bff5 2a606a3e Author: David Tolnay Date: Fri Jun 17 23:52:10 2022 -0700 Merge pull request #1060 from dtolnay/clap Update to clap 3.2 commit 2a606a3e4261d35e322b2a9bb35d66bcaba278bd Author: David Tolnay Date: Fri Jun 17 23:17:44 2022 -0700 Update to clap 3.2 commit f1d7bff5ba47c7b4dc8b65733ee354574ae9ab25 Author: David Tolnay Date: Fri Jun 17 23:23:08 2022 -0700 Require explicit edition on all Buck targets commit 5ceda9a122a567993c28f5dfaae575916d9c8c1d Author: David Tolnay Date: Fri Jun 17 22:31:15 2022 -0700 Update oldest allowed compiler for cxxbridge-cmd to 1.56.1 commit 287ae044fee934b2c29bce3dab58bafd44b80eb7 Author: David Tolnay Date: Sat Jun 11 10:15:55 2022 -0700 Use upstreamed docs.rs icon in docs.rs badge commit 1526d5bad240983c3c1a1a888d29003482a9cd78 Author: David Tolnay Date: Mon Jun 6 23:49:47 2022 -0700 Ignore significant_drop_in_scrutinee clippy lint error: temporary with significant drop in match scrutinee --> gen/build/src/intern.rs:22:26 | 22 | InternedString(match set.get(s) { | ^^^^^^^^^^ | = note: `-D clippy::significant-drop-in-scrutinee` implied by `-D clippy::all` = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#significant_drop_in_scrutinee commit 13998f0482417085433e012f46e0796099c6c774 Author: David Tolnay Date: Mon Jun 6 14:39:20 2022 -0700 Check all crates in workspace for outdated deps commit fb6db7d11ec57b0f14d3323ed201887f15a16512 Author: David Tolnay Date: Sat Jun 4 00:39:28 2022 -0700 Delete unpin_impl.rs UI test temporarily This test is affected by an ICE in nightly-2022-06-04. https://github.com/rust-lang/rust/issues/97698 Minimized repro: trait Ambiguous { fn method() {} } struct One; struct Two; struct Struct; impl Ambiguous for Struct {} impl Ambiguous for Struct {} fn main() { >::method(); } Correct error in nightly-2022-06-03: error[E0282]: type annotations needed --> src/main.rs:13:26 | 13 | >::method(); | ^ cannot infer type error[E0283]: type annotations needed --> src/main.rs:13:5 | 13 | >::method(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type | note: multiple `impl`s satisfying `Struct: Ambiguous<_>` found --> src/main.rs:9:1 | 9 | impl Ambiguous for Struct {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 10 | impl Ambiguous for Struct {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ICE in nightly-2022-06-04: thread 'rustc' panicked at 'range end index 2 out of range for slice of length 1', library/core/src/slice/index.rs:73:5 stack backtrace: 16: 0x7f4cccefd816 - core::slice::index::slice_end_index_len_fail_rt::h04ca4b0b6ddf070e 17: 0x7f4ccceef707 - core::ops::function::FnOnce::call_once::hb4cbec441e0e0d97 18: 0x7f4cccef6516 - core::intrinsics::const_eval_select::h2fab5eaa67d7a905 19: 0x7f4ccce67556 - core::slice::index::slice_end_index_len_fail::ha1557d304be1c61e 20: 0x7f4cce5ea20f - ::visit_expr 21: 0x7f4cce5e8edc - ::visit_expr 22: 0x7f4cce5fbe37 - rustc_hir[5dbb21eaf9590c92]::intravisit::walk_block:: 23: 0x7f4cce5e8eee - ::visit_expr 24: 0x7f4cce5a1714 - ::emit_inference_failure_err 25: 0x7f4cce4f32bb - ::maybe_report_ambiguity 26: 0x7f4cce4e6f87 - ::report_fulfillment_errors 27: 0x7f4ccec3fcb4 - ::enter::<&rustc_middle[c4bb946b42085c78]::ty::context::TypeckResults, ::enter::{closure#1}, &rustc_middle[c4bb946b42085c78]::ty::context::TypeckResults>::{closure#0}> 28: 0x7f4ccebd170a - rustc_typeck[4b1a1a7c06e44333]::check::typeck 29: 0x7f4ccfccf5f0 - >::with_task:: 30: 0x7f4ccf1f8380 - rustc_query_system[a1cbf340ec6d6f93]::query::plumbing::try_execute_query::> 31: 0x7f4ccf123c0e - ::typeck 32: 0x7f4ccec91708 - ::par_body_owners:: 33: 0x7f4ccfa8e18c - rustc_typeck[4b1a1a7c06e44333]::check::typeck_item_bodies 34: 0x7f4ccfcee823 - >::with_task:: 35: 0x7f4ccfd991d5 - rustc_query_system[a1cbf340ec6d6f93]::query::plumbing::try_execute_query::> 36: 0x7f4ccfdc3331 - rustc_query_system[a1cbf340ec6d6f93]::query::plumbing::get_query:: 37: 0x7f4ccfac4473 - ::time::<(), rustc_typeck[4b1a1a7c06e44333]::check_crate::{closure#7}> 38: 0x7f4ccfab109b - rustc_typeck[4b1a1a7c06e44333]::check_crate 39: 0x7f4ccf86b017 - rustc_interface[94703aee012e7483]::passes::analysis 40: 0x7f4ccfcea595 - >::with_task::> 41: 0x7f4ccfd8f1fd - rustc_query_system[a1cbf340ec6d6f93]::query::plumbing::try_execute_query::>> 42: 0x7f4ccfdd58ee - rustc_query_system[a1cbf340ec6d6f93]::query::plumbing::get_query:: 43: 0x7f4ccf8282a7 - ::enter::> 44: 0x7f4ccf81234f - ::enter::, rustc_errors[ae611370a546922c]::ErrorGuaranteed>> 45: 0x7f4ccf83bd3f - rustc_span[c774ced8c61a5d44]::with_source_map::, rustc_interface[94703aee012e7483]::interface::create_compiler_and_run, rustc_driver[7b89ea061d8aedc7]::run_compiler::{closure#1}>::{closure#1}> 46: 0x7f4ccf8131e2 - >::set::, rustc_driver[7b89ea061d8aedc7]::run_compiler::{closure#1}>::{closure#0}, core[c8091fc9dea0c6cf]::result::Result<(), rustc_errors[ae611370a546922c]::ErrorGuaranteed>> 47: 0x7f4ccf82893f - std[f19dd7bb03296d5c]::sys_common::backtrace::__rust_begin_short_backtrace::, rustc_driver[7b89ea061d8aedc7]::run_compiler::{closure#1}>::{closure#0}, core[c8091fc9dea0c6cf]::result::Result<(), rustc_errors[ae611370a546922c]::ErrorGuaranteed>>::{closure#0}, core[c8091fc9dea0c6cf]::result::Result<(), rustc_errors[ae611370a546922c]::ErrorGuaranteed>> 48: 0x7f4ccf828a99 - <::spawn_unchecked_, rustc_driver[7b89ea061d8aedc7]::run_compiler::{closure#1}>::{closure#0}, core[c8091fc9dea0c6cf]::result::Result<(), rustc_errors[ae611370a546922c]::ErrorGuaranteed>>::{closure#0}, core[c8091fc9dea0c6cf]::result::Result<(), rustc_errors[ae611370a546922c]::ErrorGuaranteed>>::{closure#1} as core[c8091fc9dea0c6cf]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} error: internal compiler error: unexpected panic note: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md note: rustc 1.63.0-nightly (a6b8c6954 2022-06-03) running on x86_64-unknown-linux-gnu note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C incremental note: some of the compiler flags provided by cargo are hidden query stack during panic: end of query stack commit 3e7e454d834eaa4ebfa9487f8aac89e246e237db Author: David Tolnay Date: Mon May 23 04:50:16 2022 -0700 Drop unneeded permissions from workflow commit b305ae77411c6fe187bd4a8323678cad1764c3ac Author: David Tolnay Date: Sat May 21 19:58:45 2022 -0700 Ignore derive_partial_eq_without_eq clippy lint error: you are deriving `PartialEq` and can implement `Eq` --> gen/lib/src/gen/block.rs:3:23 | 3 | #[derive(Copy, Clone, PartialEq, Debug)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = note: `-D clippy::derive-partial-eq-without-eq` implied by `-D clippy::all` = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/cmd/src/gen/block.rs:3:23 | 3 | #[derive(Copy, Clone, PartialEq, Debug)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/build/src/gen/block.rs:3:23 | 3 | #[derive(Copy, Clone, PartialEq, Debug)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/lib/src/syntax/atom.rs:5:23 | 5 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/lib/src/syntax/derive.rs:10:23 | 10 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/cmd/src/syntax/atom.rs:5:23 | 5 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/build/src/syntax/atom.rs:5:23 | 5 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/cmd/src/syntax/derive.rs:10:23 | 10 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/build/src/syntax/derive.rs:10:23 | 10 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/lib/src/syntax/mod.rs:72:23 | 72 | #[derive(Copy, Clone, PartialEq, Debug)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/lib/src/syntax/mod.rs:285:23 | 285 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/cmd/src/syntax/mod.rs:72:23 | 72 | #[derive(Copy, Clone, PartialEq, Debug)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/cmd/src/syntax/mod.rs:285:23 | 285 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/build/src/syntax/mod.rs:72:23 | 72 | #[derive(Copy, Clone, PartialEq, Debug)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> gen/build/src/syntax/mod.rs:285:23 | 285 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> macro/src/syntax/atom.rs:5:23 | 5 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> macro/src/syntax/derive.rs:10:23 | 10 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> macro/src/syntax/mod.rs:72:23 | 72 | #[derive(Copy, Clone, PartialEq, Debug)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq error: you are deriving `PartialEq` and can implement `Eq` --> macro/src/syntax/mod.rs:285:23 | 285 | #[derive(Copy, Clone, PartialEq)] | ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq commit 2a197e7688220f3af1957b29b26eae174669efb7 Author: David Tolnay Date: Mon May 16 15:42:16 2022 -0700 Replace unicode-xid with unicode-ident crate commit aa85818fcc0028b056d92e8c06810facb47c6e64 Author: David Tolnay Date: Mon May 16 15:40:31 2022 -0700 Lockfile update commit d4920548a7712f74ed5623e4b2694662b756a091 Author: David Tolnay Date: Fri May 13 16:45:29 2022 -0700 Release 1.0.68 commit 7455a976f7adb3a09db2d557489055e541ec3fa9 Author: David Tolnay Date: Fri May 13 16:43:47 2022 -0700 Lockfile update commit 13cc5d9df9dd6f2666df51bc90e5cfdfa25e37bf Author: David Tolnay Date: Mon May 9 21:33:38 2022 -0700 Resolve unused_attributes lints in generated code warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/module.rs:74:23 | 74 | impl UniquePtr {} | ^^ help: remove this attribute | = note: `#[warn(unused_attributes)]` on by default = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/module.rs:75:23 | 75 | impl UniquePtr {} | ^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/module.rs:76:23 | 76 | impl UniquePtr {} | ^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/module.rs:77:23 | 77 | impl UniquePtr {} | ^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/module.rs:57:51 | 57 | fn c_return_ns_unique_ptr() -> UniquePtr; | ^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/module.rs:71:54 | 71 | fn ns_c_return_unique_ptr_ns() -> UniquePtr; | ^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/lib.rs:227:18 | 227 | #[derive(ExternType)] | ^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/lib.rs:337:34 | 337 | impl CxxVector {} | ^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/lib.rs:99:48 | 99 | fn c_return_unique_ptr() -> UniquePtr; | ^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/lib.rs:100:48 | 100 | fn c_return_shared_ptr() -> SharedPtr; | ^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/lib.rs:112:77 | 112 | fn c_return_unique_ptr_vector_shared() -> UniquePtr>; | ^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/lib.rs:113:72 | 113 | fn c_return_unique_ptr_vector_opaque() -> UniquePtr>; | ^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/lib.rs:204:44 | 204 | fn c_get_use_count(weak: &WeakPtr) -> usize; | ^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> tests/ffi/lib.rs:234:72 | 234 | fn c_return_borrow<'a>(s: &'a CxxString) -> UniquePtr>; | ^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item commit af2620ca039853d5c7e42dde6ec3bf2fac6cb650 Author: David Tolnay Date: Mon May 9 21:29:38 2022 -0700 Suppress bad unused_attributes lint on doc(hidden) attr warning: `#[doc(hidden)]` is ignored on trait impl items --> src/extern_type.rs:194:17 | 194 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 202 | / impl_extern_type! { 203 | | [Trivial] 204 | | bool = "bool" 205 | | u8 = "std::uint8_t" ... | 223 | | CxxString = "std::string" 224 | | } | |_- in this macro invocation | = note: `#[warn(unused_attributes)]` on by default = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_extern_type` (in Nightly builds, run with -Z macro-backtrace for more info) commit 0b878ccec4f58febda71523acf59eb7cc830d819 Author: David Tolnay Date: Mon May 9 21:23:01 2022 -0700 Remove doc(hidden) attribute that is being phased out warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = note: `#[warn(unused_attributes)]` on by default = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 489 | impl_vector_element_for_primitive!(u8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 490 | impl_vector_element_for_primitive!(u16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 491 | impl_vector_element_for_primitive!(u32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 492 | impl_vector_element_for_primitive!(u64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 493 | impl_vector_element_for_primitive!(usize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 494 | impl_vector_element_for_primitive!(i8); | -------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 495 | impl_vector_element_for_primitive!(i16); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 496 | impl_vector_element_for_primitive!(i32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 497 | impl_vector_element_for_primitive!(i64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 498 | impl_vector_element_for_primitive!(isize); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 499 | impl_vector_element_for_primitive!(f32); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:371:9 | 371 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:381:9 | 381 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `vector_element_by_value_methods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 500 | impl_vector_element_for_primitive!(f64); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:400:13 | 400 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 502 | impl_vector_element!(opaque, "string", "CxxString", CxxString); | -------------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:404:13 | 404 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 502 | impl_vector_element!(opaque, "string", "CxxString", CxxString); | -------------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:414:13 | 414 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 502 | impl_vector_element!(opaque, "string", "CxxString", CxxString); | -------------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:425:13 | 425 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 502 | impl_vector_element!(opaque, "string", "CxxString", CxxString); | -------------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:437:13 | 437 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 502 | impl_vector_element!(opaque, "string", "CxxString", CxxString); | -------------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:449:13 | 449 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 502 | impl_vector_element!(opaque, "string", "CxxString", CxxString); | -------------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:459:13 | 459 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 502 | impl_vector_element!(opaque, "string", "CxxString", CxxString); | -------------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/cxx_vector.rs:469:13 | 469 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 502 | impl_vector_element!(opaque, "string", "CxxString", CxxString); | -------------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_vector_element` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 271 | impl_shared_ptr_target_for_primitive!(bool); | ------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 271 | impl_shared_ptr_target_for_primitive!(bool); | ------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 271 | impl_shared_ptr_target_for_primitive!(bool); | ------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 271 | impl_shared_ptr_target_for_primitive!(bool); | ------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 271 | impl_shared_ptr_target_for_primitive!(bool); | ------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 271 | impl_shared_ptr_target_for_primitive!(bool); | ------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 272 | impl_shared_ptr_target_for_primitive!(u8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 272 | impl_shared_ptr_target_for_primitive!(u8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 272 | impl_shared_ptr_target_for_primitive!(u8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 272 | impl_shared_ptr_target_for_primitive!(u8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 272 | impl_shared_ptr_target_for_primitive!(u8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 272 | impl_shared_ptr_target_for_primitive!(u8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 273 | impl_shared_ptr_target_for_primitive!(u16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 273 | impl_shared_ptr_target_for_primitive!(u16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 273 | impl_shared_ptr_target_for_primitive!(u16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 273 | impl_shared_ptr_target_for_primitive!(u16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 273 | impl_shared_ptr_target_for_primitive!(u16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 273 | impl_shared_ptr_target_for_primitive!(u16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 274 | impl_shared_ptr_target_for_primitive!(u32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 274 | impl_shared_ptr_target_for_primitive!(u32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 274 | impl_shared_ptr_target_for_primitive!(u32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 274 | impl_shared_ptr_target_for_primitive!(u32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 274 | impl_shared_ptr_target_for_primitive!(u32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 274 | impl_shared_ptr_target_for_primitive!(u32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 275 | impl_shared_ptr_target_for_primitive!(u64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 275 | impl_shared_ptr_target_for_primitive!(u64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 275 | impl_shared_ptr_target_for_primitive!(u64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 275 | impl_shared_ptr_target_for_primitive!(u64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 275 | impl_shared_ptr_target_for_primitive!(u64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 275 | impl_shared_ptr_target_for_primitive!(u64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 276 | impl_shared_ptr_target_for_primitive!(usize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 276 | impl_shared_ptr_target_for_primitive!(usize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 276 | impl_shared_ptr_target_for_primitive!(usize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 276 | impl_shared_ptr_target_for_primitive!(usize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 276 | impl_shared_ptr_target_for_primitive!(usize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 276 | impl_shared_ptr_target_for_primitive!(usize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 277 | impl_shared_ptr_target_for_primitive!(i8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 277 | impl_shared_ptr_target_for_primitive!(i8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 277 | impl_shared_ptr_target_for_primitive!(i8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 277 | impl_shared_ptr_target_for_primitive!(i8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 277 | impl_shared_ptr_target_for_primitive!(i8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 277 | impl_shared_ptr_target_for_primitive!(i8); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 278 | impl_shared_ptr_target_for_primitive!(i16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 278 | impl_shared_ptr_target_for_primitive!(i16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 278 | impl_shared_ptr_target_for_primitive!(i16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 278 | impl_shared_ptr_target_for_primitive!(i16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 278 | impl_shared_ptr_target_for_primitive!(i16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 278 | impl_shared_ptr_target_for_primitive!(i16); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 279 | impl_shared_ptr_target_for_primitive!(i32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 279 | impl_shared_ptr_target_for_primitive!(i32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 279 | impl_shared_ptr_target_for_primitive!(i32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 279 | impl_shared_ptr_target_for_primitive!(i32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 279 | impl_shared_ptr_target_for_primitive!(i32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 279 | impl_shared_ptr_target_for_primitive!(i32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 280 | impl_shared_ptr_target_for_primitive!(i64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 280 | impl_shared_ptr_target_for_primitive!(i64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 280 | impl_shared_ptr_target_for_primitive!(i64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 280 | impl_shared_ptr_target_for_primitive!(i64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 280 | impl_shared_ptr_target_for_primitive!(i64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 280 | impl_shared_ptr_target_for_primitive!(i64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 281 | impl_shared_ptr_target_for_primitive!(isize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 281 | impl_shared_ptr_target_for_primitive!(isize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 281 | impl_shared_ptr_target_for_primitive!(isize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 281 | impl_shared_ptr_target_for_primitive!(isize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 281 | impl_shared_ptr_target_for_primitive!(isize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 281 | impl_shared_ptr_target_for_primitive!(isize); | -------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 282 | impl_shared_ptr_target_for_primitive!(f32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 282 | impl_shared_ptr_target_for_primitive!(f32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 282 | impl_shared_ptr_target_for_primitive!(f32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 282 | impl_shared_ptr_target_for_primitive!(f32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 282 | impl_shared_ptr_target_for_primitive!(f32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 282 | impl_shared_ptr_target_for_primitive!(f32); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 283 | impl_shared_ptr_target_for_primitive!(f64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 283 | impl_shared_ptr_target_for_primitive!(f64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 283 | impl_shared_ptr_target_for_primitive!(f64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 283 | impl_shared_ptr_target_for_primitive!(f64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 283 | impl_shared_ptr_target_for_primitive!(f64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 283 | impl_shared_ptr_target_for_primitive!(f64); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:207:13 | 207 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 285 | impl_shared_ptr_target!("string", "CxxString", CxxString); | --------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:211:13 | 211 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 285 | impl_shared_ptr_target!("string", "CxxString", CxxString); | --------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:221:13 | 221 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 285 | impl_shared_ptr_target!("string", "CxxString", CxxString); | --------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:231:13 | 231 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 285 | impl_shared_ptr_target!("string", "CxxString", CxxString); | --------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:241:13 | 241 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 285 | impl_shared_ptr_target!("string", "CxxString", CxxString); | --------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/shared_ptr.rs:251:13 | 251 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 285 | impl_shared_ptr_target!("string", "CxxString", CxxString); | --------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_shared_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:244:5 | 244 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:248:5 | 248 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:256:5 | 256 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:262:5 | 262 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:266:5 | 266 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:270:5 | 270 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:280:5 | 280 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:284:5 | 284 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:288:5 | 288 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:292:5 | 292 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:296:5 | 296 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/unique_ptr.rs:300:5 | 300 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 181 | impl_weak_ptr_target_for_primitive!(bool); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 181 | impl_weak_ptr_target_for_primitive!(bool); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 181 | impl_weak_ptr_target_for_primitive!(bool); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 181 | impl_weak_ptr_target_for_primitive!(bool); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 181 | impl_weak_ptr_target_for_primitive!(bool); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 181 | impl_weak_ptr_target_for_primitive!(bool); | ----------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 182 | impl_weak_ptr_target_for_primitive!(u8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 182 | impl_weak_ptr_target_for_primitive!(u8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 182 | impl_weak_ptr_target_for_primitive!(u8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 182 | impl_weak_ptr_target_for_primitive!(u8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 182 | impl_weak_ptr_target_for_primitive!(u8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 182 | impl_weak_ptr_target_for_primitive!(u8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 183 | impl_weak_ptr_target_for_primitive!(u16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 183 | impl_weak_ptr_target_for_primitive!(u16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 183 | impl_weak_ptr_target_for_primitive!(u16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 183 | impl_weak_ptr_target_for_primitive!(u16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 183 | impl_weak_ptr_target_for_primitive!(u16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 183 | impl_weak_ptr_target_for_primitive!(u16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 184 | impl_weak_ptr_target_for_primitive!(u32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 184 | impl_weak_ptr_target_for_primitive!(u32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 184 | impl_weak_ptr_target_for_primitive!(u32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 184 | impl_weak_ptr_target_for_primitive!(u32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 184 | impl_weak_ptr_target_for_primitive!(u32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 184 | impl_weak_ptr_target_for_primitive!(u32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 185 | impl_weak_ptr_target_for_primitive!(u64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 185 | impl_weak_ptr_target_for_primitive!(u64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 185 | impl_weak_ptr_target_for_primitive!(u64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 185 | impl_weak_ptr_target_for_primitive!(u64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 185 | impl_weak_ptr_target_for_primitive!(u64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 185 | impl_weak_ptr_target_for_primitive!(u64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 186 | impl_weak_ptr_target_for_primitive!(usize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 186 | impl_weak_ptr_target_for_primitive!(usize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 186 | impl_weak_ptr_target_for_primitive!(usize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 186 | impl_weak_ptr_target_for_primitive!(usize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 186 | impl_weak_ptr_target_for_primitive!(usize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 186 | impl_weak_ptr_target_for_primitive!(usize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 187 | impl_weak_ptr_target_for_primitive!(i8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 187 | impl_weak_ptr_target_for_primitive!(i8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 187 | impl_weak_ptr_target_for_primitive!(i8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 187 | impl_weak_ptr_target_for_primitive!(i8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 187 | impl_weak_ptr_target_for_primitive!(i8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 187 | impl_weak_ptr_target_for_primitive!(i8); | --------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 188 | impl_weak_ptr_target_for_primitive!(i16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 188 | impl_weak_ptr_target_for_primitive!(i16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 188 | impl_weak_ptr_target_for_primitive!(i16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 188 | impl_weak_ptr_target_for_primitive!(i16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 188 | impl_weak_ptr_target_for_primitive!(i16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 188 | impl_weak_ptr_target_for_primitive!(i16); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 189 | impl_weak_ptr_target_for_primitive!(i32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 189 | impl_weak_ptr_target_for_primitive!(i32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 189 | impl_weak_ptr_target_for_primitive!(i32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 189 | impl_weak_ptr_target_for_primitive!(i32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 189 | impl_weak_ptr_target_for_primitive!(i32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 189 | impl_weak_ptr_target_for_primitive!(i32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 190 | impl_weak_ptr_target_for_primitive!(i64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 190 | impl_weak_ptr_target_for_primitive!(i64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 190 | impl_weak_ptr_target_for_primitive!(i64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 190 | impl_weak_ptr_target_for_primitive!(i64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 190 | impl_weak_ptr_target_for_primitive!(i64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 190 | impl_weak_ptr_target_for_primitive!(i64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 191 | impl_weak_ptr_target_for_primitive!(isize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 191 | impl_weak_ptr_target_for_primitive!(isize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 191 | impl_weak_ptr_target_for_primitive!(isize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 191 | impl_weak_ptr_target_for_primitive!(isize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 191 | impl_weak_ptr_target_for_primitive!(isize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 191 | impl_weak_ptr_target_for_primitive!(isize); | ------------------------------------------ in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 192 | impl_weak_ptr_target_for_primitive!(f32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 192 | impl_weak_ptr_target_for_primitive!(f32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 192 | impl_weak_ptr_target_for_primitive!(f32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 192 | impl_weak_ptr_target_for_primitive!(f32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 192 | impl_weak_ptr_target_for_primitive!(f32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 192 | impl_weak_ptr_target_for_primitive!(f32); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 193 | impl_weak_ptr_target_for_primitive!(f64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 193 | impl_weak_ptr_target_for_primitive!(f64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 193 | impl_weak_ptr_target_for_primitive!(f64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 193 | impl_weak_ptr_target_for_primitive!(f64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 193 | impl_weak_ptr_target_for_primitive!(f64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 193 | impl_weak_ptr_target_for_primitive!(f64); | ---------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:117:13 | 117 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 195 | impl_weak_ptr_target!("string", "CxxString", CxxString); | ------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:121:13 | 121 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 195 | impl_weak_ptr_target!("string", "CxxString", CxxString); | ------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:131:13 | 131 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 195 | impl_weak_ptr_target!("string", "CxxString", CxxString); | ------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:141:13 | 141 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 195 | impl_weak_ptr_target!("string", "CxxString", CxxString); | ------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:151:13 | 151 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 195 | impl_weak_ptr_target!("string", "CxxString", CxxString); | ------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) warning: `#[doc(hidden)]` is ignored on trait impl items --> src/weak_ptr.rs:161:13 | 161 | #[doc(hidden)] | ^^^^^^^^^^^^^^ help: remove this attribute ... 195 | impl_weak_ptr_target!("string", "CxxString", CxxString); | ------------------------------------------------------- in this macro invocation | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: whether the impl item is `doc(hidden)` or not entirely depends on the corresponding trait item = note: this warning originates in the macro `impl_weak_ptr_target` (in Nightly builds, run with -Z macro-backtrace for more info) commit 44762a64706ebb00de179eb103d83231d007f7dd Author: David Tolnay Date: Fri Apr 29 19:53:28 2022 -0700 Update ui test suite to nightly-2022-04-30 commit 21e66f64f97b4d299968d11d8e6b17b9b81a90f6 Author: David Tolnay Date: Wed Apr 27 20:02:52 2022 -0700 Update ui test suite to nightly-2022-04-28 commit 5d8f38c87136de59b694b0708ec29910bb9a5db2 Merge: 0be969da b828c003 Author: David Tolnay Date: Wed Apr 27 14:57:50 2022 -0700 Merge pull request #1042 from dtolnay/bazel Replace half-baked repository_os logic with get_host_triple commit b828c0038ef2f36e95c408e18d7b9e1355e9d1bd Author: David Tolnay Date: Wed Apr 27 14:40:54 2022 -0700 Replace half-baked repository_os logic with get_host_triple commit 07b30a57e93aa359dbf77562355fa43a496961af Author: David Tolnay Date: Wed Apr 27 14:39:15 2022 -0700 Pull in newer Bazel rules_rust commit 0be969daa54e7fd5928b253fbefbee9fde67af99 Author: David Tolnay Date: Tue Apr 26 21:28:49 2022 -0700 Update ui test suite to nightly-2022-04-27 commit 38d631130c6d48aaeeeef4f39bf4dc0daf941aab Merge: 0006c00f c3f14590 Author: David Tolnay Date: Tue Apr 26 14:42:54 2022 -0700 Merge pull request #1041 from dtolnay/bazel Replace deprecated rust_repositories call in bazel WORKSPACE commit c3f14590475a1a796f3a3910fd102cfded0f24d3 Author: David Tolnay Date: Tue Apr 26 14:20:06 2022 -0700 Replace deprecated rust_repositories call in bazel WORKSPACE This function is documented as deprecated in rules_rust. **Deprecated**: Use [rules_rust_dependencies](#rules_rust_dependencies) and [rust_register_toolchains](#rust_register_toolchains) directly. commit 0006c00f45e38bbadc84e1956d5e7d399b3354bf Author: David Tolnay Date: Mon Apr 25 18:50:09 2022 -0700 Release 1.0.67 commit 267b90d4b426f9837bd373e7a5c81800e71da942 Merge: f9f215fc e31ca999 Author: David Tolnay Date: Mon Apr 25 18:48:01 2022 -0700 Merge pull request #1040 from dtolnay/bazel Pull in my landed edition-related PRs from Bazel rules_rust commit e31ca999d1db2892468e766581026b0f9292a97a Author: David Tolnay Date: Mon Apr 25 18:24:46 2022 -0700 Pull in my landed edition-related PRs from Bazel rules_rust commit f9f215fc0f4958f3541fcfe10195e71fb29669ab Author: David Tolnay Date: Mon Apr 25 18:25:51 2022 -0700 Run buildifier on WORKSPACE commit 205964659b552e9999941aea134d25ac89140a0a Author: David Tolnay Date: Sun Apr 24 18:28:00 2022 -0700 Update workflows to actions/checkout@v3 commit 36737e42d68ada78e9f8516d6c7f7ad1d3ecfb22 Author: David Tolnay Date: Sun Apr 24 15:59:25 2022 -0700 Ignore unused ignore attribute warning in some configurations commit 2ec5f2b839c9012b15fd280ea0135d26a1af29db Author: David Tolnay Date: Sun Apr 24 15:17:52 2022 -0700 Disable ui test on miri commit 95ff4822aa766613a6e47523a3ead86cd5f24bbc Author: David Tolnay Date: Sun Apr 24 11:17:13 2022 -0700 Remove default value of vendor's cargo_version attribute commit 5b62339ce574949bff7244125b78be3bd82e3bb7 Author: David Tolnay Date: Sun Apr 24 11:13:16 2022 -0700 Lockfile update commit 3ebcb56b2098c595ce55fa8ad32bf7c3db18fe6b Author: David Tolnay Date: Sun Apr 24 10:30:31 2022 -0700 Compute target triple as {arch}-{os} commit d42f229646db30681eea47e9531ff1ba39b59e3b Author: David Tolnay Date: Sun Apr 24 10:22:33 2022 -0700 Rearrange target_triple logic to highlight matching on os then arch commit 57965873b33a0cf519871a945dd29384efdcc1a0 Author: David Tolnay Date: Sun Apr 24 10:19:49 2022 -0700 Format vendor.bzl with buildifier commit 2b3edb057cbc2920c93d139c6dc7b4fe20c7a7f0 Author: David Tolnay Date: Sun Apr 24 10:18:30 2022 -0700 More specific is_arm -> is_aarch64 in bazel vendor script commit 60a31430d2f0554c4f61366aed6c78ca97994ace Merge: a2be2f03 bd751097 Author: David Tolnay Date: Sun Apr 24 10:15:23 2022 -0700 Merge pull request #1039 from snowp/fix-aarch-check bazel: fix arm check commit bd751097cd19fff34c60c875dec5271e95f5c1bd Author: Snow Pettersen Date: Sun Apr 24 08:39:48 2022 -0400 fix arm check commit a2be2f03daba017105badc33e903d98554a3556f Author: David Tolnay Date: Fri Apr 22 19:54:40 2022 -0700 Update ui test suite to nightly-2022-04-23 commit 3b30338b4eb1cf4ac93e77b9fbc430b0171cbcea Merge: d89e3626 b433f9a7 Author: David Tolnay Date: Tue Apr 19 11:09:55 2022 -0700 Merge pull request #1038 from snowp/arm-support support resolving arm triplet with bazel commit b433f9a79293df3df93927a7e5df0e2881cc1015 Author: Snow Pettersen Date: Tue Apr 19 13:29:12 2022 -0400 param commit bb72157b2961fdbac72c5f518ad53548e13fc103 Author: Snow Pettersen Date: Tue Apr 19 13:23:39 2022 -0400 bazel: support resolving arm triple commit d89e36260f99de853a2f29c28293775c42940446 Author: David Tolnay Date: Sun Apr 17 20:48:18 2022 -0700 Update ui test suite to nightly-2022-04-18 commit d8f9c9d92449a2bd3c9ba946d96bb25e758f6c98 Author: David Tolnay Date: Sun Apr 10 20:18:36 2022 -0700 Update CI job to bazel 5.1.1 commit f7eb64fd7f044ea3664ce3a0e3a54b66c839799c Merge: 4aa5e24f 9614f12e Author: David Tolnay Date: Sun Apr 10 19:23:03 2022 -0700 Merge pull request #1035 from dtolnay/bazel Set up Bazel rust_repositories with a default edition that is not usable commit 9614f12e1f92229ae49dca7fa667a59d216f07e7 Author: David Tolnay Date: Sun Apr 10 19:12:16 2022 -0700 Set up Bazel rust_repositories with a default edition that is not usable commit 4aa5e24f23348c2e071efb033cccfe497a72bd04 Author: David Tolnay Date: Sun Apr 10 18:58:41 2022 -0700 Pull in newer Bazel rules_rust commit 43bb09390f0027f14e1d8b3158eeb4b8e19056a5 Author: David Tolnay Date: Sun Apr 10 18:55:36 2022 -0700 Bump Bazel build to rustc 1.60.0 commit ef4cf85f0c3e944cb46f7d3f6e1dd13869c00487 Author: David Tolnay Date: Sun Apr 10 18:54:44 2022 -0700 Bump Bazel build to rustc 1.59.0 commit 87e686a8dfc76e24203f85fb863bc3f095cf7a75 Author: David Tolnay Date: Sun Apr 10 18:49:06 2022 -0700 Bump Bazel build to rustc 1.58.0 commit 6681053841117486768ef85640752e93c5de3fa9 Merge: a519f44e e09caa6a Author: David Tolnay Date: Sun Apr 10 18:55:15 2022 -0700 Merge pull request #1034 from dtolnay/bazel Enforce edition on all Bazel targets commit e09caa6a1fb3bbc813871b952171c91c237f8291 Author: David Tolnay Date: Sun Apr 10 18:06:09 2022 -0700 Enforce edition on all Bazel targets commit a519f44e03c6dac2afe69a6d1f7114b34f467b00 Author: David Tolnay Date: Sun Apr 10 17:55:54 2022 -0700 Reset white background on graphic commit bd252432f246cb72cafc379860e8e9949f97da1e Author: David Tolnay Date: Sun Apr 10 13:08:34 2022 -0700 Convert overview diagram from svgbob to latex commit 48d77a69132e1a9fa20ab594917e7e71144c728e Merge: 3f370597 9b0ed32e Author: David Tolnay Date: Fri Apr 1 17:59:39 2022 -0700 Merge pull request #1029 from keith/ks/bazel-only-use-lld-on-linux [bazel] Only use lld on Linux commit 9b0ed32e82671702bcdc865a3dbd5ee863cb3d05 Author: Keith Smiley Date: Fri Apr 1 17:41:18 2022 -0700 [bazel] Only use lld on Linux macOS C++ toolchains from Apple do not contain lld, so bazel builds in this repo would fail. This change scopes this only to Linux commit 3f3705978ecd616f11e2b9a54b676fb5aad94bd0 Author: David Tolnay Date: Wed Mar 30 19:31:36 2022 -0700 Update ui test suite to nightly-2022-03-31 commit 4f3cd190e61207ac3054fb2210a0253c452e4018 Author: David Tolnay Date: Tue Mar 8 18:32:27 2022 -0800 Update ui test suite to nightly-2022-03-09 commit f13e68f5c5abcf30ca83b0183bafd752ed7b7368 Author: David Tolnay Date: Tue Mar 8 12:19:26 2022 -0800 Release 1.0.66 commit 4b69f59c6646ce3fe5bba573da00a679cc106f90 Author: David Tolnay Date: Tue Mar 8 12:17:46 2022 -0800 Lockfile update commit a6e1cd1e8d9d6df20e88e7443963dc4c5c8c4875 Merge: c53e4bc8 033294e8 Author: David Tolnay Date: Tue Mar 8 12:16:25 2022 -0800 Merge pull request #1021 from dtolnay/carray Recognize C array of relocatable element type in struct as relocatable commit 033294e89327d51d6ee51cac8e0c7d6a4d5ff18a Author: David Tolnay Date: Tue Mar 8 12:03:03 2022 -0800 Add test of struct containing C array commit 993353fa28425a9f17ee5f43ddc04ae79c2c01ed Author: David Tolnay Date: Tue Mar 8 11:52:38 2022 -0800 Recognize C array of relocatable element type in struct as relocatable commit c53e4bc81b876c3d19652e9e35d85379239cdc31 Author: David Tolnay Date: Wed Feb 16 19:46:45 2022 -0800 Release 1.0.65 commit 6d3e9ac0016f19e1a8c576c66cfe4f0fb52480d8 Merge: 32e3036a feec8a17 Author: David Tolnay Date: Wed Feb 16 19:42:27 2022 -0800 Merge pull request #1016 from dtolnay/clap Update to clap 3.1.0 commit feec8a1762e022ad1aad317f0c77857625417d6c Author: David Tolnay Date: Wed Feb 16 19:20:28 2022 -0800 Resolve clap deprecations warning: use of deprecated struct `clap::App`: Replaced with `Command` --> gen/cmd/src/app.rs:9:12 | 9 | use clap::{App, AppSettings, Arg}; | ^^^ | = note: `#[warn(deprecated)]` on by default warning: use of deprecated struct `clap::App`: Replaced with `Command` --> gen/cmd/src/app.rs:36:13 | 36 | fn app() -> App<'static> { | ^^^ warning: use of deprecated struct `clap::App`: Replaced with `Command` --> gen/cmd/src/app.rs:37:19 | 37 | let mut app = App::new("cxxbridge") | ^^^ warning: use of deprecated variant `clap::AppSettings::NextLineHelp`: Replaced with `Command::next_line_help` and `Command::is_next_line_help_set` --> gen/cmd/src/app.rs:40:31 | 40 | .setting(AppSettings::NextLineHelp) | ^^^^^^^^^^^^ commit 19ed7f88086e4b76ffc67f3e7b588c1314d8ad75 Author: David Tolnay Date: Wed Feb 16 19:19:23 2022 -0800 Pull in clap 3.1.0 commit 32e3036a60b31d83bdde6a6190395ea687746f82 Author: David Tolnay Date: Wed Feb 16 19:17:54 2022 -0800 Lockfile update commit b26a1f0ae0ee8dbb8d72a39dd8d3e6cae5a6aef0 Merge: 5847f874 a4c94445 Author: David Tolnay Date: Sun Feb 13 10:59:24 2022 -0800 Merge pull request #1014 from philipcraig/clippy clippy fixes commit a4c94445a92b87e7b649e155cf6e8af5def181cb Author: Philip Craig <689193+philipcraig@users.noreply.github.com> Date: Sun Feb 13 15:00:29 2022 +0000 clippy fixes commit 5847f874faf0d69af74c4b44416dfbb733f6bccf Author: David Tolnay Date: Fri Feb 11 19:34:44 2022 -0800 Ignore incorrect transmute_undefined_repr clippy lint commit 883ed7783f31340348483adc6054fb80134991fa Author: David Tolnay Date: Fri Feb 11 18:59:37 2022 -0800 Update ui test suite to nightly-2022-02-12 commit 3df4cc84a1f4100835a5efa0cfa7d6de45748153 Author: David Tolnay Date: Tue Feb 8 18:34:22 2022 -0800 Update ui test suite to nightly-2022-02-09 commit 26137f95a2167b9c8754496d123dba7125a7d09b Author: David Tolnay Date: Sun Jan 30 13:03:12 2022 -0800 Release 1.0.64 commit b2bdb7cb3cf829a87c2f1e5fc97778fa2f521be6 Author: David Tolnay Date: Sun Jan 30 13:02:10 2022 -0800 Lockfile update commit 09e8df598f0cdb56cdeb68a46b53ddb11919f5a6 Author: David Tolnay Date: Sun Jan 30 12:49:15 2022 -0800 Add workaround for evaluating cfg(debug_assertions) commit b03c912181f4af8bcb63aa226dea06e793398645 Author: David Tolnay Date: Sun Jan 30 12:48:19 2022 -0800 Reduce indentation in CargoEnvCfgEvaluator --- .bazelrc | 3 +- .buckconfig | 2 +- .github/workflows/ci.yml | 21 +- .github/workflows/site.yml | 4 +- BUCK | 5 + BUILD | 5 + Cargo.toml | 8 +- README.md | 2 +- WORKSPACE | 19 +- book/diagram/.gitignore | 9 +- book/diagram/Makefile | 16 +- book/diagram/overview.ascii | 13 - book/diagram/overview.svg | 132 ----- book/diagram/overview.tex | 45 ++ book/src/cxx.png | Bin 64483 -> 71692 bytes book/src/index.md | 4 +- book/src/overview.svg | 541 ++++++++++++++++---- demo/BUCK | 1 + demo/BUILD | 1 + flags/Cargo.toml | 2 +- gen/build/Cargo.toml | 6 +- gen/build/src/cargo.rs | 31 +- gen/build/src/lib.rs | 3 + gen/cmd/Cargo.toml | 10 +- gen/cmd/src/app.rs | 63 +-- gen/cmd/src/main.rs | 1 + gen/lib/Cargo.toml | 6 +- gen/lib/src/lib.rs | 1 + gen/src/builtin.rs | 17 + gen/src/write.rs | 32 +- macro/Cargo.toml | 6 +- macro/src/expand.rs | 49 +- macro/src/lib.rs | 1 + macro/src/load.rs | 6 +- src/cxx.cc | 4 + src/cxx_vector.rs | 10 - src/extern_type.rs | 1 + src/lib.rs | 5 +- src/shared_ptr.rs | 35 +- src/unique_ptr.rs | 25 +- src/weak_ptr.rs | 6 - syntax/attrs.rs | 5 + syntax/parse.rs | 55 +- tests/BUCK | 2 + tests/BUILD | 2 + tests/compiletest.rs | 2 + tests/ffi/lib.rs | 17 +- tests/ffi/tests.h | 2 + tests/test.rs | 30 +- tests/ui/deny_elided_lifetimes.stderr | 6 +- tests/ui/deny_missing_docs.stderr | 4 +- tests/ui/enum_match_without_wildcard.stderr | 14 +- tests/ui/nonlocal_rust_type.stderr | 4 +- tests/ui/unique_ptr_twice.stderr | 4 +- tests/ui/unpin_impl.rs | 10 - tests/ui/unpin_impl.stderr | 18 - tests/ui/unsupported_elided.stderr | 6 +- third-party/BUCK | 75 +-- third-party/BUILD | 88 ++-- third-party/Cargo.lock | 160 +++--- tools/bazel/vendor.bzl | 10 +- tools/buck/rust_library.bzl | 3 + 62 files changed, 1034 insertions(+), 634 deletions(-) delete mode 100644 book/diagram/overview.ascii delete mode 100644 book/diagram/overview.svg create mode 100644 book/diagram/overview.tex delete mode 100644 tests/ui/unpin_impl.rs delete mode 100644 tests/ui/unpin_impl.stderr diff --git a/.bazelrc b/.bazelrc index 6ffa81e54..5e3ff76a0 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1 +1,2 @@ -build --@rules_rust//:extra_rustc_flags=-Clink-arg=-fuse-ld=lld +build --enable_platform_specific_config +build:linux --@rules_rust//:extra_rustc_flags=-Clink-arg=-fuse-ld=lld diff --git a/.buckconfig b/.buckconfig index 5c6c995ad..570a844eb 100644 --- a/.buckconfig +++ b/.buckconfig @@ -13,7 +13,7 @@ cxxflags = -std=c++11 [rust] - default_edition = 2018 + default_edition = required rustc_flags = \ -Clink-arg=-fuse-ld=lld \ -Crelocation-model=dynamic-no-pic \ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d934ced98..a1c49fac1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,14 +16,11 @@ jobs: - rust: nightly - rust: beta - rust: stable - - rust: 1.54.0 + - rust: 1.56.1 - rust: 1.48.0 - name: macOS rust: nightly os: macos - - name: Windows (gnu) - rust: nightly-x86_64-pc-windows-gnu - os: windows - name: Windows (msvc) rust: nightly-x86_64-pc-windows-msvc os: windows @@ -35,7 +32,7 @@ jobs: - name: Enable symlinks (windows) if: matrix.os == 'windows' run: git config --global core.symlinks true - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@master with: toolchain: ${{matrix.rust}} @@ -67,7 +64,7 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - uses: actions/setup-java@v1 with: @@ -94,10 +91,10 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install Bazel run: | - wget -q -O install.sh https://github.com/bazelbuild/bazel/releases/download/4.2.2/bazel-4.2.2-installer-linux-x86_64.sh + wget -q -O install.sh https://github.com/bazelbuild/bazel/releases/download/5.1.1/bazel-5.1.1-installer-linux-x86_64.sh chmod +x install.sh ./install.sh --user echo $HOME/bin >> $GITHUB_PATH @@ -111,7 +108,7 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@clippy - run: cargo clippy --workspace --tests -- -Dclippy::all @@ -120,7 +117,7 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install clang-tidy run: sudo apt-get install clang-tidy-11 - name: Run clang-tidy @@ -131,6 +128,6 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: dtolnay/install@cargo-outdated - - run: cargo outdated --exit-code 1 + - run: cargo outdated --workspace --exit-code 1 diff --git a/.github/workflows/site.yml b/.github/workflows/site.yml index d6b0ca6d0..e5f4ac473 100644 --- a/.github/workflows/site.yml +++ b/.github/workflows/site.yml @@ -12,8 +12,10 @@ jobs: deploy: name: Deploy runs-on: ubuntu-latest + permissions: + contents: write steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Get mdBook run: | diff --git a/BUCK b/BUCK index ff61bfd95..d8cf619ec 100644 --- a/BUCK +++ b/BUCK @@ -1,6 +1,7 @@ rust_library( name = "cxx", srcs = glob(["src/**"]), + edition = "2018", features = [ "alloc", "std", @@ -16,6 +17,7 @@ rust_binary( name = "codegen", srcs = glob(["gen/cmd/src/**"]), crate = "cxxbridge", + edition = "2018", visibility = ["PUBLIC"], deps = [ "//third-party:clap", @@ -41,6 +43,7 @@ rust_library( name = "macro", srcs = glob(["macro/src/**"]), crate = "cxxbridge_macro", + edition = "2018", proc_macro = True, deps = [ "//third-party:proc-macro2", @@ -52,6 +55,7 @@ rust_library( rust_library( name = "build", srcs = glob(["gen/build/src/**"]), + edition = "2018", visibility = ["PUBLIC"], deps = [ "//third-party:cc", @@ -67,6 +71,7 @@ rust_library( rust_library( name = "lib", srcs = glob(["gen/lib/src/**"]), + edition = "2018", visibility = ["PUBLIC"], deps = [ "//third-party:cc", diff --git a/BUILD b/BUILD index 43a1a5872..4a46cb530 100644 --- a/BUILD +++ b/BUILD @@ -8,6 +8,7 @@ rust_library( "alloc", "std", ], + edition = "2018", proc_macro_deps = [ ":cxxbridge-macro", ], @@ -19,6 +20,7 @@ rust_binary( name = "codegen", srcs = glob(["gen/cmd/src/**/*.rs"]), data = ["gen/cmd/src/gen/include/cxx.h"], + edition = "2018", visibility = ["//visibility:public"], deps = [ "//third-party:clap", @@ -46,6 +48,7 @@ cc_library( rust_proc_macro( name = "cxxbridge-macro", srcs = glob(["macro/src/**"]), + edition = "2018", deps = [ "//third-party:proc-macro2", "//third-party:quote", @@ -57,6 +60,7 @@ rust_library( name = "build", srcs = glob(["gen/build/src/**/*.rs"]), data = ["gen/build/src/gen/include/cxx.h"], + edition = "2018", visibility = ["//visibility:public"], deps = [ "//third-party:cc", @@ -73,6 +77,7 @@ rust_library( name = "lib", srcs = glob(["gen/lib/src/**/*.rs"]), data = ["gen/lib/src/gen/include/cxx.h"], + edition = "2018", visibility = ["//visibility:public"], deps = [ "//third-party:cc", diff --git a/Cargo.toml b/Cargo.toml index 420501583..76dd885a3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cxx" -version = "1.0.63" # remember to update html_root_url +version = "1.0.71" # remember to update html_root_url authors = ["David Tolnay "] edition = "2018" rust-version = "1.48" @@ -24,15 +24,15 @@ alloc = [] std = ["alloc"] [dependencies] -cxxbridge-macro = { version = "=1.0.63", path = "macro" } +cxxbridge-macro = { version = "=1.0.71", path = "macro" } link-cplusplus = "1.0" [build-dependencies] cc = "1.0.49" -cxxbridge-flags = { version = "=1.0.63", path = "flags", default-features = false } +cxxbridge-flags = { version = "=1.0.71", path = "flags", default-features = false } [dev-dependencies] -cxx-build = { version = "=1.0.63", path = "gen/build" } +cxx-build = { version = "=1.0.71", path = "gen/build" } cxx-gen = { version = "0.7", path = "gen/lib" } cxx-test-suite = { version = "0", path = "tests/ffi" } rustversion = "1.0" diff --git a/README.md b/README.md index 7dd4ded91..d00d8ac91 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ CXX — safe FFI between Rust and C++ [github](https://github.com/dtolnay/cxx) [crates.io](https://crates.io/crates/cxx) -[docs.rs](https://docs.rs/cxx) +[docs.rs](https://docs.rs/cxx) [build status](https://github.com/dtolnay/cxx/actions?query=branch%3Amaster) This library provides a **safe** mechanism for calling C++ code from Rust and diff --git a/WORKSPACE b/WORKSPACE index fba62aa36..793bf14d1 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -4,20 +4,21 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "rules_rust", - sha256 = "29fee78077bd8c6477bc895a47e6c759f92df0735ed60587e1da7b51f53d26eb", - strip_prefix = "rules_rust-23a4631cad819003642b1a148e458fe4ed2c54e1", + sha256 = "617082067629939c0a22f587811a3e822a50a203119a90380e21f5aec3373da9", + strip_prefix = "rules_rust-e07881fa22a5f0d16230d8b23bbff2bf358823b8", urls = [ - # Main branch as of 2021-12-07 - "https://github.com/bazelbuild/rules_rust/archive/23a4631cad819003642b1a148e458fe4ed2c54e1.tar.gz", + # Main branch as of 2022-04-27 + "https://github.com/bazelbuild/rules_rust/archive/e07881fa22a5f0d16230d8b23bbff2bf358823b8.tar.gz", ], ) -load("@rules_rust//rust:repositories.bzl", "rust_repositories") +load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains") -RUST_VERSION = "1.57.0" +RUST_VERSION = "1.60.0" -rust_repositories( - edition = "2018", +rules_rust_dependencies() + +rust_register_toolchains( version = RUST_VERSION, ) @@ -25,6 +26,6 @@ load("//tools/bazel:vendor.bzl", "vendor") vendor( name = "third-party", - lockfile = "//third-party:Cargo.lock", cargo_version = RUST_VERSION, + lockfile = "//third-party:Cargo.lock", ) diff --git a/book/diagram/.gitignore b/book/diagram/.gitignore index 81631c695..27572bd3b 100644 --- a/book/diagram/.gitignore +++ b/book/diagram/.gitignore @@ -1,2 +1,7 @@ -/bin -/build +*.aux +*.fdb_latexmk +*.fls +*.log +*.pdf +*.png +*.svg diff --git a/book/diagram/Makefile b/book/diagram/Makefile index 161da3493..1723a9b9f 100644 --- a/book/diagram/Makefile +++ b/book/diagram/Makefile @@ -1,12 +1,8 @@ -all: overview.svg +overview.svg: overview.pdf + pdf2svg $< $@ -build/bin/svgbob: - cargo install --git https://github.com/ivanceras/svgbob --rev df01674c47350665158ececa476e63f51c58a9c7 --root build +overview.pdf: overview.tex + latexmk $< -%.svg: %.ascii build/bin/svgbob - build/bin/svgbob $< > $@ - -clean: - rm -f *.svg - -.PHONY: all clean +overview.png: overview.svg + svgexport $< $@ 3x diff --git a/book/diagram/overview.ascii b/book/diagram/overview.ascii deleted file mode 100644 index dd1c4b93b..000000000 --- a/book/diagram/overview.ascii +++ /dev/null @@ -1,13 +0,0 @@ - .-----------------------------. - | #[cxx::bridge] mod | - | description of boundary | - '--------------+--------------' - | - | - "Macro expansion" | "Code generation" - +---------------+---------------+ - Safe | | - straightforward v v Straightforward - "Rust APIs".----------------. "Hidden C ABI".---------------. "C++ APIs" -Rust <----------->| "Rust bindings"|<~~~~~~~~~~~~~>| "C++ bindings"|<-----------> "C++" -code '----------------' '---------------' code diff --git a/book/diagram/overview.svg b/book/diagram/overview.svg deleted file mode 100644 index e51546682..000000000 --- a/book/diagram/overview.svg +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - Rust bindings - - C++ bindings - #[cxx::bridge] - mod - description - of - boundary - - - Safe - straightforward - Straightforward - - - - - - - Rust - code - code - Macro expansion - Code generation - Rust APIs - Hidden C ABI - C++ APIs - C++ - - - - - - - - - - - - - diff --git a/book/diagram/overview.tex b/book/diagram/overview.tex new file mode 100644 index 000000000..a613bb751 --- /dev/null +++ b/book/diagram/overview.tex @@ -0,0 +1,45 @@ +\documentclass{standalone} +\usepackage{makecell} +\usepackage{pgfplots} +\usepackage{sansmath} +\usetikzlibrary{arrows.meta} +\pgfplotsset{compat=1.16} +\begin{document} +\pagecolor{white} +\begin{tikzpicture}[ + x=1cm, + y=-.6cm, + every node/.append style={ + line width=1.5pt, + font=\Large\sansmath\sffamily, + }, + every path/.append style={ + >={Latex[length=10pt,width=8pt]}, + line width=1.5pt, + }, + execute at end node={\vphantom{bg}}, +] +\node[draw, rounded corners=5, inner xsep=30pt, inner ysep=2pt] + (bridge) at (0, .25) {\makecell{\texttt{\#\hspace{-1pt}[}cxx::bridge\texttt{]} mod\\[-4pt]description of boundary}}; +\node[draw, rounded corners, inner xsep=10pt, inner ysep=6pt, text depth=1pt] + (rust-bindings) at (-3.5, 6.5) {Rust bindings}; +\node[draw, rounded corners, inner xsep=10pt, inner ysep=6pt, text depth=1pt] + (cpp-bindings) at (3.5, 6.5) {C\texttt{++} bindings}; +\node[inner xsep=4pt, inner ysep=-0pt] + (rust-code) at (-9, 6.5) {\makecell[r]{\\[-8pt]Rust\\[-4pt]code}}; +\node[inner xsep=4pt, inner ysep=-0pt] + (cpp-code) at (9, 6.5) {\makecell[l]{\\[-8pt]C\texttt{++}\\[-4pt]code}}; +\draw (bridge) -- (0, 4); +\draw[<->] (rust-bindings) |- (0, 4) -| (cpp-bindings); +\draw[<->] (rust-code) -- (rust-bindings); +\draw[<->, dash pattern=on 8pt off 6pt] (rust-bindings) -- (cpp-bindings); +\draw[<->] (cpp-bindings) -- (cpp-code); +\draw (-.75, 4) node[anchor=south east] {Macro expansion}; +\draw (.75, 4) node[anchor=south west] {Code generation}; +\draw (0, 6.5) node[anchor=south, inner ysep=4pt] {Hidden C ABI}; +\draw (-6.75, 6.5) node[anchor=south, inner ysep=1pt] {\makecell{Safe\\[-4pt]straightforward\\[-4pt]Rust APIs}}; +\draw (6.75, 6.5) node[anchor=south, inner ysep=1pt] {\makecell{Straightforward\\[-4pt]C\texttt{++} APIs}}; +\pgfresetboundingbox\path + (-9.5, 0) -- (rust-bindings.south)+(0, .3) -- (9.5, 0) -- (bridge.north); +\end{tikzpicture} +\end{document} diff --git a/book/src/cxx.png b/book/src/cxx.png index aeb7ca9bf9488855303387c931a2e44f6c2ebbe5..07118aafb0a6df27f3a327e946de93e3e0844a2d 100644 GIT binary patch literal 71692 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 pjoaHTN{06o?v5s50#I83Q(8g2z19< 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ξ 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 NsVZqf>J+S^{y(ziPAvcc diff --git a/book/src/index.md b/book/src/index.md index 7b03e7e15..7add044c3 100644 --- a/book/src/index.md +++ b/book/src/index.md @@ -1,5 +1,5 @@ # CXX — safe interop between Rust and C++ @@ -11,7 +11,7 @@ boundary effectively within this regime. CXX fills in the low level stuff so that you get a safe binding, preventing the pitfalls of doing a foreign function interface over unsafe C-style signatures. -
+
diff --git a/book/src/overview.svg b/book/src/overview.svg index 659054710..df4fcf49e 100644 --- a/book/src/overview.svg +++ b/book/src/overview.svg @@ -1,99 +1,444 @@ - - - - - - - - - - - - - - - - - - - - - - Rust bindings - - C++ bindings - #[cxx::bridge] mod - description of boundary - - - - - Safe - straightforward - Straightforward - - - - - - - - - - Rust - code - code - Macro expansion - Code generation - Rust APIs - Hidden C ABI - C++ APIs - C++ - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/BUCK b/demo/BUCK index 43b83aad4..cb7dc52d5 100644 --- a/demo/BUCK +++ b/demo/BUCK @@ -3,6 +3,7 @@ load("//tools/buck:rust_cxx_bridge.bzl", "rust_cxx_bridge") rust_binary( name = "demo", srcs = glob(["src/**/*.rs"]), + edition = "2018", deps = [ ":blobstore-sys", ":bridge", diff --git a/demo/BUILD b/demo/BUILD index 0c940d134..3f598fe25 100644 --- a/demo/BUILD +++ b/demo/BUILD @@ -5,6 +5,7 @@ load("//tools/bazel:rust_cxx_bridge.bzl", "rust_cxx_bridge") rust_binary( name = "demo", srcs = glob(["src/**/*.rs"]), + edition = "2018", deps = [ ":blobstore-sys", ":bridge", diff --git a/flags/Cargo.toml b/flags/Cargo.toml index ee7c78b7f..acce1e56f 100644 --- a/flags/Cargo.toml +++ b/flags/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cxxbridge-flags" -version = "1.0.63" +version = "1.0.71" authors = ["David Tolnay "] edition = "2018" rust-version = "1.48" diff --git a/gen/build/Cargo.toml b/gen/build/Cargo.toml index 20aafca3f..a91164ffe 100644 --- a/gen/build/Cargo.toml +++ b/gen/build/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cxx-build" -version = "1.0.63" +version = "1.0.71" authors = ["David Tolnay "] edition = "2018" rust-version = "1.48" @@ -21,10 +21,10 @@ experimental-async-fn = [] cc = "1.0.49" codespan-reporting = "0.11" once_cell = "1.9" -proc-macro2 = { version = "1.0.26", default-features = false, features = ["span-locations"] } +proc-macro2 = { version = "1.0.39", default-features = false, features = ["span-locations"] } quote = { version = "1.0", default-features = false } scratch = "1.0" -syn = { version = "1.0.70", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] } +syn = { version = "1.0.95", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] } [dev-dependencies] cxx-gen = { version = "0.7", path = "../lib" } diff --git a/gen/build/src/cargo.rs b/gen/build/src/cargo.rs index 7a105ae68..cbaa58a44 100644 --- a/gen/build/src/cargo.rs +++ b/gen/build/src/cargo.rs @@ -18,27 +18,28 @@ impl CfgEvaluator for CargoEnvCfgEvaluator { fn eval(&self, name: &str, query_value: Option<&str>) -> CfgResult { let env = ENV.get_or_init(CargoEnv::load); if name == "feature" { - if let Some(query_value) = query_value { + return if let Some(query_value) = query_value { CfgResult::from(env.features.contains(Lookup::new(query_value))) } else { let msg = "expected `feature = \"...\"`".to_owned(); CfgResult::Undetermined { msg } - } - } else if name == "test" && query_value.is_none() { + }; + } + if name == "test" && query_value.is_none() { let msg = "cfg(test) is not supported because Cargo runs your build script only once across the lib and test build of the same crate".to_owned(); - CfgResult::Undetermined { msg } - } else { - match env.cfgs.get(Lookup::new(name)) { - Some(cargo_value) => { - if let Some(query_value) = query_value { - CfgResult::from(cargo_value.split(',').any(|value| value == query_value)) - } else { - CfgResult::True - } - } - None => CfgResult::False, - } + return CfgResult::Undetermined { msg }; + } + if let Some(cargo_value) = env.cfgs.get(Lookup::new(name)) { + return if let Some(query_value) = query_value { + CfgResult::from(cargo_value.split(',').any(|value| value == query_value)) + } else { + CfgResult::True + }; + } + if name == "debug_assertions" && query_value.is_none() { + return CfgResult::from(cfg!(debug_assertions)); } + CfgResult::False } } diff --git a/gen/build/src/lib.rs b/gen/build/src/lib.rs index bdb43a159..7272a396c 100644 --- a/gen/build/src/lib.rs +++ b/gen/build/src/lib.rs @@ -48,9 +48,11 @@ #![allow( clippy::cast_sign_loss, clippy::default_trait_access, + clippy::derive_partial_eq_without_eq, clippy::doc_markdown, clippy::drop_copy, clippy::enum_glob_use, + clippy::explicit_auto_deref, clippy::if_same_then_else, clippy::inherent_to_string, clippy::items_after_statements, @@ -67,6 +69,7 @@ clippy::or_fun_call, clippy::redundant_else, clippy::shadow_unrelated, + clippy::significant_drop_in_scrutinee, clippy::similar_names, clippy::single_match_else, clippy::struct_excessive_bools, diff --git a/gen/cmd/Cargo.toml b/gen/cmd/Cargo.toml index 7d94b2dc9..1d7fa8b2c 100644 --- a/gen/cmd/Cargo.toml +++ b/gen/cmd/Cargo.toml @@ -1,9 +1,9 @@ [package] name = "cxxbridge-cmd" -version = "1.0.63" +version = "1.0.71" authors = ["David Tolnay "] edition = "2018" -rust-version = "1.54" +rust-version = "1.56" license = "MIT OR Apache-2.0" description = "C++ code generator for integrating `cxx` crate into a non-Cargo build." repository = "https://github.com/dtolnay/cxx" @@ -21,11 +21,11 @@ path = "src/main.rs" experimental-async-fn = [] [dependencies] -clap = { version = "3.0", default-features = false, features = ["std", "suggestions"] } +clap = { version = "3.2", default-features = false, features = ["std", "suggestions"] } codespan-reporting = "0.11" -proc-macro2 = { version = "1.0.26", default-features = false, features = ["span-locations"] } +proc-macro2 = { version = "1.0.39", default-features = false, features = ["span-locations"] } quote = { version = "1.0", default-features = false } -syn = { version = "1.0.70", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] } +syn = { version = "1.0.95", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] } [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/gen/cmd/src/app.rs b/gen/cmd/src/app.rs index 0a8486600..a1adb387d 100644 --- a/gen/cmd/src/app.rs +++ b/gen/cmd/src/app.rs @@ -6,10 +6,11 @@ use super::{Opt, Output}; use crate::cfg::{self, CfgValue}; use crate::gen::include::Include; use crate::syntax::IncludeKind; -use clap::{App, AppSettings, Arg}; +use clap::builder::{ArgAction, ValueParser}; +use clap::{Arg, Command}; use std::collections::{BTreeMap as Map, BTreeSet as Set}; -use std::ffi::OsStr; use std::path::PathBuf; +use std::sync::{Arc, Mutex, PoisonError}; use syn::parse::Parser; const USAGE: &str = "\ @@ -33,11 +34,11 @@ OPTIONS: {options}\ "; -fn app() -> App<'static> { - let mut app = App::new("cxxbridge") +fn app() -> Command<'static> { + let mut app = Command::new("cxxbridge") .override_usage(USAGE) .help_template(TEMPLATE) - .setting(AppSettings::NextLineHelp) + .next_line_help(true) .arg(arg_input()) .arg(arg_cxx_impl_annotations()) .arg(arg_header()) @@ -63,11 +64,13 @@ const CFG: &str = "cfg"; pub(super) fn from_args() -> Opt { let matches = app().get_matches(); - let input = matches.value_of_os(INPUT).map(PathBuf::from); - let cxx_impl_annotations = matches.value_of(CXX_IMPL_ANNOTATIONS).map(str::to_owned); - let header = matches.is_present(HEADER); + let input = matches.get_one::(INPUT).cloned(); + let cxx_impl_annotations = matches + .get_one::(CXX_IMPL_ANNOTATIONS) + .map(String::clone); + let header = matches.contains_id(HEADER); let include = matches - .values_of(INCLUDE) + .get_many::(INCLUDE) .unwrap_or_default() .map(|include| { if include.starts_with('<') && include.ends_with('>') { @@ -85,11 +88,11 @@ pub(super) fn from_args() -> Opt { .collect(); let mut outputs = Vec::new(); - for path in matches.values_of_os(OUTPUT).unwrap_or_default() { - outputs.push(if path == "-" { + for path in matches.get_many::(OUTPUT).unwrap_or_default() { + outputs.push(if path.as_os_str() == "-" { Output::Stdout } else { - Output::File(PathBuf::from(path)) + Output::File(path.clone()) }); } if outputs.is_empty() { @@ -97,7 +100,7 @@ pub(super) fn from_args() -> Opt { } let mut cfg = Map::new(); - for arg in matches.values_of(CFG).unwrap_or_default() { + for arg in matches.get_many::(CFG).unwrap_or_default() { let (name, value) = cfg::parse.parse_str(arg).unwrap(); cfg.entry(name).or_insert_with(Set::new).insert(value); } @@ -112,19 +115,11 @@ pub(super) fn from_args() -> Opt { } } -fn validate_utf8(arg: &OsStr) -> Result<(), &'static str> { - if arg.to_str().is_some() { - Ok(()) - } else { - Err("invalid utf-8 sequence") - } -} - fn arg_input() -> Arg<'static> { Arg::new(INPUT) .help("Input Rust source file containing #[cxx::bridge].") .required_unless_present(HEADER) - .allow_invalid_utf8(true) + .value_parser(ValueParser::path_buf()) } fn arg_cxx_impl_annotations() -> Arg<'static> { @@ -138,8 +133,7 @@ these C++ functions in another."; .long(CXX_IMPL_ANNOTATIONS) .takes_value(true) .value_name("annotation") - .allow_invalid_utf8(true) - .validator_os(validate_utf8) + .value_parser(ValueParser::string()) .help(HELP) } @@ -159,9 +153,8 @@ into the generated C++ code as #include lines."; .long(INCLUDE) .short('i') .takes_value(true) - .multiple_occurrences(true) - .allow_invalid_utf8(true) - .validator_os(validate_utf8) + .action(ArgAction::Append) + .value_parser(ValueParser::string()) .help(HELP) } @@ -173,9 +166,8 @@ not specified."; .long(OUTPUT) .short('o') .takes_value(true) - .multiple_occurrences(true) - .allow_invalid_utf8(true) - .validator_os(validate_utf8) + .action(ArgAction::Append) + .value_parser(ValueParser::path_buf()) .help(HELP) } @@ -183,22 +175,23 @@ fn arg_cfg() -> Arg<'static> { const HELP: &str = "\ Compilation configuration matching what will be used to build the Rust side of the bridge."; - let mut bool_cfgs = Map::::new(); + let bool_cfgs = Arc::new(Mutex::new(Map::::new())); Arg::new(CFG) .long(CFG) .takes_value(true) .value_name("name=\"value\" | name[=true] | name=false") - .multiple_occurrences(true) - .validator(move |arg| match cfg::parse.parse_str(arg) { - Ok((_, CfgValue::Str(_))) => Ok(()), + .action(ArgAction::Append) + .value_parser(move |arg: &str| match cfg::parse.parse_str(arg) { + Ok((_, CfgValue::Str(_))) => Ok(arg.to_owned()), Ok((name, CfgValue::Bool(value))) => { + let mut bool_cfgs = bool_cfgs.lock().unwrap_or_else(PoisonError::into_inner); if let Some(&prev) = bool_cfgs.get(&name) { if prev != value { return Err(format!("cannot have both {0}=false and {0}=true", name)); } } bool_cfgs.insert(name, value); - Ok(()) + Ok(arg.to_owned()) } Err(_) => Err("expected name=\"value\", name=true, or name=false".to_owned()), }) diff --git a/gen/cmd/src/main.rs b/gen/cmd/src/main.rs index e375d524e..4d5edfd15 100644 --- a/gen/cmd/src/main.rs +++ b/gen/cmd/src/main.rs @@ -2,6 +2,7 @@ clippy::cast_sign_loss, clippy::cognitive_complexity, clippy::default_trait_access, + clippy::derive_partial_eq_without_eq, clippy::enum_glob_use, clippy::if_same_then_else, clippy::inherent_to_string, diff --git a/gen/lib/Cargo.toml b/gen/lib/Cargo.toml index 4f045250f..b470eb210 100644 --- a/gen/lib/Cargo.toml +++ b/gen/lib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cxx-gen" -version = "0.7.63" +version = "0.7.71" authors = ["Adrian Taylor "] edition = "2018" rust-version = "1.48" @@ -13,9 +13,9 @@ categories = ["development-tools::ffi"] [dependencies] codespan-reporting = "0.11" -proc-macro2 = { version = "1.0.26", default-features = false, features = ["span-locations"] } +proc-macro2 = { version = "1.0.39", default-features = false, features = ["span-locations"] } quote = { version = "1.0", default-features = false } -syn = { version = "1.0.70", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] } +syn = { version = "1.0.95", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] } [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/gen/lib/src/lib.rs b/gen/lib/src/lib.rs index 8e052f7ba..47cfa18d6 100644 --- a/gen/lib/src/lib.rs +++ b/gen/lib/src/lib.rs @@ -12,6 +12,7 @@ #![allow( clippy::cast_sign_loss, clippy::default_trait_access, + clippy::derive_partial_eq_without_eq, clippy::enum_glob_use, clippy::if_same_then_else, clippy::inherent_to_string, diff --git a/gen/src/builtin.rs b/gen/src/builtin.rs index 7ac9209cd..7ee91c564 100644 --- a/gen/src/builtin.rs +++ b/gen/src/builtin.rs @@ -28,6 +28,7 @@ pub struct Builtins<'a> { pub rust_slice_repr: bool, pub exception: bool, pub relocatable: bool, + pub relocatable_or_array: bool, pub friend_impl: bool, pub is_complete: bool, pub destroy: bool, @@ -113,6 +114,11 @@ pub(super) fn write(out: &mut OutFile) { include.sys_types = true; } + if builtin.relocatable_or_array { + include.cstddef = true; + builtin.relocatable = true; + } + if builtin.relocatable { include.type_traits = true; } @@ -357,6 +363,17 @@ pub(super) fn write(out: &mut OutFile) { writeln!(out, "}};"); } + if builtin.relocatable_or_array { + out.next_section(); + writeln!(out, "template "); + writeln!(out, "struct IsRelocatableOrArray : IsRelocatable {{}};"); + writeln!(out, "template "); + writeln!( + out, + "struct IsRelocatableOrArray : IsRelocatableOrArray {{}};", + ); + } + out.end_block(Block::AnonymousNamespace); out.end_block(Block::InlineNamespace("cxxbridge1")); diff --git a/gen/src/write.rs b/gen/src/write.rs index c2d79c0e5..0a2705ed1 100644 --- a/gen/src/write.rs +++ b/gen/src/write.rs @@ -470,7 +470,25 @@ fn check_trivial_extern_type(out: &mut OutFile, alias: &TypeAlias, reasons: &[Tr let id = alias.name.to_fully_qualified(); out.builtin.relocatable = true; writeln!(out, "static_assert("); - writeln!(out, " ::rust::IsRelocatable<{}>::value,", id); + if reasons + .iter() + .all(|r| matches!(r, TrivialReason::StructField(_))) + { + // If the type is only used as a struct field and not as by-value + // function argument or any other use, then C array of trivially + // relocatable type is also permissible. + // + // --- means something sane: + // struct T { char buf[N]; }; + // + // --- means something totally different: + // void f(char buf[N]); + // + out.builtin.relocatable_or_array = true; + writeln!(out, " ::rust::IsRelocatableOrArray<{}>::value,", id); + } else { + writeln!(out, " ::rust::IsRelocatable<{}>::value,", id); + } writeln!( out, " \"type {} should be trivially move constructible and trivially destructible in C++ to be used as {} in Rust\");", @@ -1776,6 +1794,18 @@ fn write_shared_ptr(out: &mut OutFile, key: NamedImplKey) { writeln!(out, "}}"); } begin_function_definition(out); + writeln!( + out, + "void cxxbridge1$shared_ptr${}$from_unmanaged(::std::shared_ptr<{}>* ptr, void* data) noexcept {{", + instance, inner, + ); + writeln!( + out, + "new (ptr) std::shared_ptr<{}>(static_cast<{}*>(data));", + inner, inner + ); + writeln!(out, "}}"); + begin_function_definition(out); writeln!( out, "void cxxbridge1$shared_ptr${}$clone(const ::std::shared_ptr<{}>& self, ::std::shared_ptr<{}> *ptr) noexcept {{", diff --git a/macro/Cargo.toml b/macro/Cargo.toml index d565f6b03..546b5147c 100644 --- a/macro/Cargo.toml +++ b/macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cxxbridge-macro" -version = "1.0.63" +version = "1.0.71" authors = ["David Tolnay "] edition = "2018" rust-version = "1.48" @@ -21,9 +21,9 @@ experimental-async-fn = [] experimental-enum-variants-from-header = ["clang-ast", "flate2", "memmap", "serde", "serde_json"] [dependencies] -proc-macro2 = "1.0" +proc-macro2 = "1.0.39" quote = "1.0.4" -syn = { version = "1.0.70", features = ["full"] } +syn = { version = "1.0.95", features = ["full"] } # optional dependencies: clang-ast = { version = "0.1", optional = true } diff --git a/macro/src/expand.rs b/macro/src/expand.rs index 8b0a08185..5859304c0 100644 --- a/macro/src/expand.rs +++ b/macro/src/expand.rs @@ -172,12 +172,13 @@ fn expand_struct(strct: &Struct) -> TokenStream { quote! { #doc - #attrs #derives + #attrs #[repr(C)] #struct_def unsafe impl #generics ::cxx::ExternType for #ident #generics { + #[allow(unused_attributes)] // incorrect lint #[doc(hidden)] type Id = #type_id; type Kind = ::cxx::kind::Trivial; @@ -341,8 +342,8 @@ fn expand_enum(enm: &Enum) -> TokenStream { quote! { #doc - #attrs #derives + #attrs #[repr(transparent)] #enum_def @@ -352,6 +353,7 @@ fn expand_enum(enm: &Enum) -> TokenStream { } unsafe impl ::cxx::ExternType for #ident { + #[allow(unused_attributes)] // incorrect lint #[doc(hidden)] type Id = #type_id; type Kind = ::cxx::kind::Trivial; @@ -393,6 +395,7 @@ fn expand_cxx_type(ety: &ExternType) -> TokenStream { #extern_type_def unsafe impl #generics ::cxx::ExternType for #ident #generics { + #[allow(unused_attributes)] // incorrect lint #[doc(hidden)] type Id = #type_id; type Kind = ::cxx::kind::Opaque; @@ -784,6 +787,7 @@ fn expand_function_pointer_trampoline( prevent_unwind_label, None, Some(&efn.generics), + &efn.attrs, body_span, ); let var = &var.rust; @@ -829,6 +833,7 @@ fn expand_rust_type_impl(ety: &ExternType) -> TokenStream { let span = derive.span; impls.extend(quote_spanned! {span=> unsafe impl #generics ::cxx::ExternType for #ident #generics { + #[allow(unused_attributes)] // incorrect lint #[doc(hidden)] type Id = #type_id; type Kind = ::cxx::kind::Opaque; @@ -933,6 +938,7 @@ fn expand_rust_function_shim(efn: &ExternFn, types: &Types) -> TokenStream { prevent_unwind_label, invoke, None, + &efn.attrs, body_span, ) } @@ -945,6 +951,7 @@ fn expand_rust_function_shim_impl( prevent_unwind_label: String, invoke: Option<&Ident>, outer_generics: Option<&Generics>, + attrs: &OtherAttrs, body_span: Span, ) -> TokenStream { let generics = outer_generics.unwrap_or(&sig.generics); @@ -1119,6 +1126,7 @@ fn expand_rust_function_shim_impl( }; quote_spanned! {span=> + #attrs #[doc(hidden)] #[export_name = #link_name] unsafe extern "C" fn #local_name #generics(#(#all_args,)* #outparam #pointer) #ret { @@ -1385,7 +1393,6 @@ fn expand_unique_ptr( let can_construct_from_value = types.is_maybe_trivial(ident); let new_method = if can_construct_from_value { Some(quote! { - #[doc(hidden)] fn __new(value: Self) -> ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void> { extern "C" { #[link_name = #link_uninit] @@ -1406,11 +1413,9 @@ fn expand_unique_ptr( quote_spanned! {end_span=> #unsafe_token impl #impl_generics ::cxx::private::UniquePtrTarget for #ident #ty_generics { - #[doc(hidden)] fn __typename(f: &mut ::cxx::core::fmt::Formatter<'_>) -> ::cxx::core::fmt::Result { f.write_str(#name) } - #[doc(hidden)] fn __null() -> ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void> { extern "C" { #[link_name = #link_null] @@ -1421,7 +1426,6 @@ fn expand_unique_ptr( repr } #new_method - #[doc(hidden)] unsafe fn __raw(raw: *mut Self) -> ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void> { extern "C" { #[link_name = #link_raw] @@ -1431,7 +1435,6 @@ fn expand_unique_ptr( __raw(&mut repr, raw.cast()); repr } - #[doc(hidden)] unsafe fn __get(repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *const Self { extern "C" { #[link_name = #link_get] @@ -1439,7 +1442,6 @@ fn expand_unique_ptr( } __get(&repr).cast() } - #[doc(hidden)] unsafe fn __release(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut Self { extern "C" { #[link_name = #link_release] @@ -1447,7 +1449,6 @@ fn expand_unique_ptr( } __release(&mut repr).cast() } - #[doc(hidden)] unsafe fn __drop(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) { extern "C" { #[link_name = #link_drop] @@ -1470,6 +1471,7 @@ fn expand_shared_ptr( let prefix = format!("cxxbridge1$shared_ptr${}$", resolve.name.to_symbol()); let link_null = format!("{}null", prefix); let link_uninit = format!("{}uninit", prefix); + let link_from_unmanaged = format!("{}from_unmanaged", prefix); let link_clone = format!("{}clone", prefix); let link_get = format!("{}get", prefix); let link_drop = format!("{}drop", prefix); @@ -1479,7 +1481,6 @@ fn expand_shared_ptr( let can_construct_from_value = types.is_maybe_trivial(ident); let new_method = if can_construct_from_value { Some(quote! { - #[doc(hidden)] unsafe fn __new(value: Self, new: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_uninit] @@ -1498,11 +1499,9 @@ fn expand_shared_ptr( quote_spanned! {end_span=> #unsafe_token impl #impl_generics ::cxx::private::SharedPtrTarget for #ident #ty_generics { - #[doc(hidden)] fn __typename(f: &mut ::cxx::core::fmt::Formatter<'_>) -> ::cxx::core::fmt::Result { f.write_str(#name) } - #[doc(hidden)] unsafe fn __null(new: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_null] @@ -1511,7 +1510,13 @@ fn expand_shared_ptr( __null(new); } #new_method - #[doc(hidden)] + unsafe fn __from_unmanaged(value: *mut Self, new: *mut ::cxx::core::ffi::c_void) { + extern "C" { + #[link_name = #link_from_unmanaged] + fn __from_unmanaged(new: *const ::cxx::core::ffi::c_void, value: *mut ::cxx::core::ffi::c_void); + } + __from_unmanaged(new, value as *mut ::cxx::core::ffi::c_void); + } unsafe fn __clone(this: *const ::cxx::core::ffi::c_void, new: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_clone] @@ -1519,7 +1524,6 @@ fn expand_shared_ptr( } __clone(this, new); } - #[doc(hidden)] unsafe fn __get(this: *const ::cxx::core::ffi::c_void) -> *const Self { extern "C" { #[link_name = #link_get] @@ -1527,7 +1531,6 @@ fn expand_shared_ptr( } __get(this).cast() } - #[doc(hidden)] unsafe fn __drop(this: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_drop] @@ -1558,11 +1561,9 @@ fn expand_weak_ptr(key: NamedImplKey, types: &Types, explicit_impl: Option<&Impl quote_spanned! {end_span=> #unsafe_token impl #impl_generics ::cxx::private::WeakPtrTarget for #ident #ty_generics { - #[doc(hidden)] fn __typename(f: &mut ::cxx::core::fmt::Formatter<'_>) -> ::cxx::core::fmt::Result { f.write_str(#name) } - #[doc(hidden)] unsafe fn __null(new: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_null] @@ -1570,7 +1571,6 @@ fn expand_weak_ptr(key: NamedImplKey, types: &Types, explicit_impl: Option<&Impl } __null(new); } - #[doc(hidden)] unsafe fn __clone(this: *const ::cxx::core::ffi::c_void, new: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_clone] @@ -1578,7 +1578,6 @@ fn expand_weak_ptr(key: NamedImplKey, types: &Types, explicit_impl: Option<&Impl } __clone(this, new); } - #[doc(hidden)] unsafe fn __downgrade(shared: *const ::cxx::core::ffi::c_void, weak: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_downgrade] @@ -1586,7 +1585,6 @@ fn expand_weak_ptr(key: NamedImplKey, types: &Types, explicit_impl: Option<&Impl } __downgrade(shared, weak); } - #[doc(hidden)] unsafe fn __upgrade(weak: *const ::cxx::core::ffi::c_void, shared: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_upgrade] @@ -1594,7 +1592,6 @@ fn expand_weak_ptr(key: NamedImplKey, types: &Types, explicit_impl: Option<&Impl } __upgrade(weak, shared); } - #[doc(hidden)] unsafe fn __drop(this: *mut ::cxx::core::ffi::c_void) { extern "C" { #[link_name = #link_drop] @@ -1638,7 +1635,6 @@ fn expand_cxx_vector( let can_pass_element_by_value = types.is_maybe_trivial(elem); let by_value_methods = if can_pass_element_by_value { Some(quote_spanned! {end_span=> - #[doc(hidden)] unsafe fn __push_back( this: ::cxx::core::pin::Pin<&mut ::cxx::CxxVector>, value: &mut ::cxx::core::mem::ManuallyDrop, @@ -1652,7 +1648,6 @@ fn expand_cxx_vector( } __push_back(this, value as *mut ::cxx::core::mem::ManuallyDrop as *mut ::cxx::core::ffi::c_void); } - #[doc(hidden)] unsafe fn __pop_back( this: ::cxx::core::pin::Pin<&mut ::cxx::CxxVector>, out: &mut ::cxx::core::mem::MaybeUninit, @@ -1673,11 +1668,9 @@ fn expand_cxx_vector( quote_spanned! {end_span=> #unsafe_token impl #impl_generics ::cxx::private::VectorElement for #elem #ty_generics { - #[doc(hidden)] fn __typename(f: &mut ::cxx::core::fmt::Formatter<'_>) -> ::cxx::core::fmt::Result { f.write_str(#name) } - #[doc(hidden)] fn __vector_size(v: &::cxx::CxxVector) -> usize { extern "C" { #[link_name = #link_size] @@ -1685,7 +1678,6 @@ fn expand_cxx_vector( } unsafe { __vector_size(v) } } - #[doc(hidden)] unsafe fn __get_unchecked(v: *mut ::cxx::CxxVector, pos: usize) -> *mut Self { extern "C" { #[link_name = #link_get_unchecked] @@ -1697,7 +1689,6 @@ fn expand_cxx_vector( __get_unchecked(v, pos) as *mut Self } #by_value_methods - #[doc(hidden)] fn __unique_ptr_null() -> ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void> { extern "C" { #[link_name = #link_unique_ptr_null] @@ -1707,7 +1698,6 @@ fn expand_cxx_vector( unsafe { __unique_ptr_null(&mut repr) } repr } - #[doc(hidden)] unsafe fn __unique_ptr_raw(raw: *mut ::cxx::CxxVector) -> ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void> { extern "C" { #[link_name = #link_unique_ptr_raw] @@ -1717,7 +1707,6 @@ fn expand_cxx_vector( __unique_ptr_raw(&mut repr, raw); repr } - #[doc(hidden)] unsafe fn __unique_ptr_get(repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *const ::cxx::CxxVector { extern "C" { #[link_name = #link_unique_ptr_get] @@ -1725,7 +1714,6 @@ fn expand_cxx_vector( } __unique_ptr_get(&repr) } - #[doc(hidden)] unsafe fn __unique_ptr_release(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut ::cxx::CxxVector { extern "C" { #[link_name = #link_unique_ptr_release] @@ -1733,7 +1721,6 @@ fn expand_cxx_vector( } __unique_ptr_release(&mut repr) } - #[doc(hidden)] unsafe fn __unique_ptr_drop(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) { extern "C" { #[link_name = #link_unique_ptr_drop] diff --git a/macro/src/lib.rs b/macro/src/lib.rs index e48d1a3a3..138e3a299 100644 --- a/macro/src/lib.rs +++ b/macro/src/lib.rs @@ -1,6 +1,7 @@ #![allow( clippy::cast_sign_loss, clippy::default_trait_access, + clippy::derive_partial_eq_without_eq, clippy::doc_markdown, clippy::enum_glob_use, clippy::if_same_then_else, diff --git a/macro/src/load.rs b/macro/src/load.rs index baf88413f..a9958aee8 100644 --- a/macro/src/load.rs +++ b/macro/src/load.rs @@ -59,10 +59,10 @@ pub fn load(cx: &mut Errors, apis: &mut [Api]) { let is_gzipped = memmap.get(..2) == Some(b"\x1f\x8b"); if is_gzipped { gunzipped = Vec::new(); - let decode_result = GzDecoder::new(&mut gunzipped).write_all(&memmap); + let decode_result = GzDecoder::new(&mut gunzipped).write_all(memmap); decode_result.map(|_| gunzipped.as_slice()) } else { - Ok(&memmap as &[u8]) + Ok(memmap as &[u8]) } } Err(error) => Err(error), @@ -143,7 +143,7 @@ fn traverse<'a>( }; let repr = translate_qual_type( cx, - &enm, + enm, fixed_underlying_type .desugared_qual_type .as_ref() diff --git a/src/cxx.cc b/src/cxx.cc index 1601a05ab..cc7375743 100644 --- a/src/cxx.cc +++ b/src/cxx.cc @@ -666,6 +666,10 @@ static_assert(sizeof(std::string) <= kMaxExpectedWordsInString * sizeof(void *), std::shared_ptr *ptr) noexcept { \ new (ptr) std::shared_ptr(); \ } \ + void cxxbridge1$std$shared_ptr$##RUST_TYPE##$from_unmanaged( \ + std::shared_ptr *ptr, void* data) noexcept { \ + new (ptr) std::shared_ptr(static_cast(data)); \ + } \ CXX_TYPE *cxxbridge1$std$shared_ptr$##RUST_TYPE##$uninit( \ std::shared_ptr *ptr) noexcept { \ CXX_TYPE *uninit = \ diff --git a/src/cxx_vector.rs b/src/cxx_vector.rs index d1fa23a2f..abf9297a8 100644 --- a/src/cxx_vector.rs +++ b/src/cxx_vector.rs @@ -368,7 +368,6 @@ pub unsafe trait VectorElement: Sized { macro_rules! vector_element_by_value_methods { (opaque, $segment:expr, $ty:ty) => {}; (trivial, $segment:expr, $ty:ty) => { - #[doc(hidden)] unsafe fn __push_back(v: Pin<&mut CxxVector<$ty>>, value: &mut ManuallyDrop<$ty>) { extern "C" { attr! { @@ -378,7 +377,6 @@ macro_rules! vector_element_by_value_methods { } unsafe { __push_back(v, value) } } - #[doc(hidden)] unsafe fn __pop_back(v: Pin<&mut CxxVector<$ty>>, out: &mut MaybeUninit<$ty>) { extern "C" { attr! { @@ -397,11 +395,9 @@ macro_rules! impl_vector_element { const_assert_eq!(1, mem::align_of::>()); unsafe impl VectorElement for $ty { - #[doc(hidden)] fn __typename(f: &mut fmt::Formatter) -> fmt::Result { f.write_str($name) } - #[doc(hidden)] fn __vector_size(v: &CxxVector<$ty>) -> usize { extern "C" { attr! { @@ -411,7 +407,6 @@ macro_rules! impl_vector_element { } unsafe { __vector_size(v) } } - #[doc(hidden)] unsafe fn __get_unchecked(v: *mut CxxVector<$ty>, pos: usize) -> *mut $ty { extern "C" { attr! { @@ -422,7 +417,6 @@ macro_rules! impl_vector_element { unsafe { __get_unchecked(v, pos) } } vector_element_by_value_methods!($kind, $segment, $ty); - #[doc(hidden)] fn __unique_ptr_null() -> MaybeUninit<*mut c_void> { extern "C" { attr! { @@ -434,7 +428,6 @@ macro_rules! impl_vector_element { unsafe { __unique_ptr_null(&mut repr) } repr } - #[doc(hidden)] unsafe fn __unique_ptr_raw(raw: *mut CxxVector) -> MaybeUninit<*mut c_void> { extern "C" { attr! { @@ -446,7 +439,6 @@ macro_rules! impl_vector_element { unsafe { __unique_ptr_raw(&mut repr, raw) } repr } - #[doc(hidden)] unsafe fn __unique_ptr_get(repr: MaybeUninit<*mut c_void>) -> *const CxxVector { extern "C" { attr! { @@ -456,7 +448,6 @@ macro_rules! impl_vector_element { } unsafe { __unique_ptr_get(&repr) } } - #[doc(hidden)] unsafe fn __unique_ptr_release(mut repr: MaybeUninit<*mut c_void>) -> *mut CxxVector { extern "C" { attr! { @@ -466,7 +457,6 @@ macro_rules! impl_vector_element { } unsafe { __unique_ptr_release(&mut repr) } } - #[doc(hidden)] unsafe fn __unique_ptr_drop(mut repr: MaybeUninit<*mut c_void>) { extern "C" { attr! { diff --git a/src/extern_type.rs b/src/extern_type.rs index b42045b90..d131ae127 100644 --- a/src/extern_type.rs +++ b/src/extern_type.rs @@ -191,6 +191,7 @@ macro_rules! impl_extern_type { $($( $(#[$($attr)*])* unsafe impl ExternType for $ty { + #[allow(unused_attributes)] // incorrect lint; this doc(hidden) attr *is* respected by rustdoc #[doc(hidden)] type Id = crate::type_id!($cxxpath); type Kind = $kind; diff --git a/src/lib.rs b/src/lib.rs index f73073dea..4f009ad41 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,7 +2,7 @@ //! //! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github //! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust -//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K +//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs //! //!
//! @@ -364,7 +364,7 @@ //! #![no_std] -#![doc(html_root_url = "https://docs.rs/cxx/1.0.63")] +#![doc(html_root_url = "https://docs.rs/cxx/1.0.71")] #![deny(improper_ctypes, improper_ctypes_definitions, missing_docs)] #![cfg_attr(not(no_unsafe_op_in_unsafe_fn_lint), deny(unsafe_op_in_unsafe_fn))] #![cfg_attr(no_unsafe_op_in_unsafe_fn_lint, allow(unused_unsafe))] @@ -389,6 +389,7 @@ clippy::or_fun_call, clippy::ptr_arg, clippy::toplevel_ref_arg, + clippy::transmute_undefined_repr, // clippy bug: https://github.com/rust-lang/rust-clippy/issues/8417 clippy::useless_let_if_seq, clippy::wrong_self_convention )] diff --git a/src/shared_ptr.rs b/src/shared_ptr.rs index 317773d42..a215ad001 100644 --- a/src/shared_ptr.rs +++ b/src/shared_ptr.rs @@ -48,6 +48,24 @@ where } } + /// Create a shared pointer from an already-allocated object + /// Corresponds to constructor (3) of [std::shared\_ptr](https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr) + /// + /// The SharedPtr gains ownership of the pointer and will call std::default_delete on it when the refcount goes to zero. + /// The data will not be moved, so any pointers to this data elsewhere in the program continue to be valid + /// + /// # Safety + /// + /// Value must either be null or point to a valid instance of T + pub unsafe fn from_unmanaged(value: *mut T) -> Self { + let mut shared_ptr = MaybeUninit::>::uninit(); + let new = shared_ptr.as_mut_ptr().cast(); + unsafe { + T::__from_unmanaged(value, new); + shared_ptr.assume_init() + } + } + /// Checks whether the SharedPtr does not own an object. /// /// This is the opposite of [std::shared_ptr\::operator bool](https://en.cppreference.com/w/cpp/memory/shared_ptr/operator_bool). @@ -194,6 +212,8 @@ pub unsafe trait SharedPtrTarget { unreachable!() } #[doc(hidden)] + unsafe fn __from_unmanaged(value: *mut Self, new: *mut c_void); + #[doc(hidden)] unsafe fn __clone(this: *const c_void, new: *mut c_void); #[doc(hidden)] unsafe fn __get(this: *const c_void) -> *const Self; @@ -204,11 +224,9 @@ pub unsafe trait SharedPtrTarget { macro_rules! impl_shared_ptr_target { ($segment:expr, $name:expr, $ty:ty) => { unsafe impl SharedPtrTarget for $ty { - #[doc(hidden)] fn __typename(f: &mut fmt::Formatter) -> fmt::Result { f.write_str($name) } - #[doc(hidden)] unsafe fn __null(new: *mut c_void) { extern "C" { attr! { @@ -218,7 +236,6 @@ macro_rules! impl_shared_ptr_target { } unsafe { __null(new) } } - #[doc(hidden)] unsafe fn __new(value: Self, new: *mut c_void) { extern "C" { attr! { @@ -228,7 +245,15 @@ macro_rules! impl_shared_ptr_target { } unsafe { __uninit(new).cast::<$ty>().write(value) } } - #[doc(hidden)] + unsafe fn __from_unmanaged(value: *mut Self, new: *mut c_void) { + extern "C" { + attr! { + #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$from_unmanaged")] + fn __from_unmanaged(new: *mut c_void, value: *mut c_void); + } + } + unsafe { __from_unmanaged(new, value as *mut c_void) } + } unsafe fn __clone(this: *const c_void, new: *mut c_void) { extern "C" { attr! { @@ -238,7 +263,6 @@ macro_rules! impl_shared_ptr_target { } unsafe { __clone(this, new) } } - #[doc(hidden)] unsafe fn __get(this: *const c_void) -> *const Self { extern "C" { attr! { @@ -248,7 +272,6 @@ macro_rules! impl_shared_ptr_target { } unsafe { __get(this) }.cast() } - #[doc(hidden)] unsafe fn __drop(this: *mut c_void) { extern "C" { attr! { diff --git a/src/unique_ptr.rs b/src/unique_ptr.rs index 63a1ca78c..6debe6c65 100644 --- a/src/unique_ptr.rs +++ b/src/unique_ptr.rs @@ -1,8 +1,9 @@ use crate::cxx_vector::{CxxVector, VectorElement}; use crate::fmt::display; use crate::kind::Trivial; +use crate::memory::SharedPtrTarget; use crate::string::CxxString; -use crate::ExternType; +use crate::{ExternType, SharedPtr}; use core::ffi::c_void; use core::fmt::{self, Debug, Display}; use core::marker::PhantomData; @@ -107,6 +108,15 @@ where ty: PhantomData, } } + + /// Convert this UniquePtr to a SharedPtr, analogous to constructor (13) for [std::shared\_ptr](https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr) + pub fn to_shared(self) -> SharedPtr where T: SharedPtrTarget { + unsafe { SharedPtr::from_unmanaged(self.into_raw()) } + } +} + +impl UniquePtr +where T: UniquePtrTarget + SharedPtrTarget { } unsafe impl Send for UniquePtr where T: Send + UniquePtrTarget {} @@ -225,6 +235,7 @@ pub unsafe trait UniquePtrTarget { unsafe fn __release(repr: MaybeUninit<*mut c_void>) -> *mut Self; #[doc(hidden)] unsafe fn __drop(repr: MaybeUninit<*mut c_void>); + } extern "C" { @@ -241,11 +252,9 @@ extern "C" { } unsafe impl UniquePtrTarget for CxxString { - #[doc(hidden)] fn __typename(f: &mut fmt::Formatter) -> fmt::Result { f.write_str("CxxString") } - #[doc(hidden)] fn __null() -> MaybeUninit<*mut c_void> { let mut repr = MaybeUninit::uninit(); unsafe { @@ -253,21 +262,17 @@ unsafe impl UniquePtrTarget for CxxString { } repr } - #[doc(hidden)] unsafe fn __raw(raw: *mut Self) -> MaybeUninit<*mut c_void> { let mut repr = MaybeUninit::uninit(); unsafe { unique_ptr_std_string_raw(&mut repr, raw) } repr } - #[doc(hidden)] unsafe fn __get(repr: MaybeUninit<*mut c_void>) -> *const Self { unsafe { unique_ptr_std_string_get(&repr) } } - #[doc(hidden)] unsafe fn __release(mut repr: MaybeUninit<*mut c_void>) -> *mut Self { unsafe { unique_ptr_std_string_release(&mut repr) } } - #[doc(hidden)] unsafe fn __drop(mut repr: MaybeUninit<*mut c_void>) { unsafe { unique_ptr_std_string_drop(&mut repr) } } @@ -277,27 +282,21 @@ unsafe impl UniquePtrTarget for CxxVector where T: VectorElement, { - #[doc(hidden)] fn __typename(f: &mut fmt::Formatter) -> fmt::Result { write!(f, "CxxVector<{}>", display(T::__typename)) } - #[doc(hidden)] fn __null() -> MaybeUninit<*mut c_void> { T::__unique_ptr_null() } - #[doc(hidden)] unsafe fn __raw(raw: *mut Self) -> MaybeUninit<*mut c_void> { unsafe { T::__unique_ptr_raw(raw) } } - #[doc(hidden)] unsafe fn __get(repr: MaybeUninit<*mut c_void>) -> *const Self { unsafe { T::__unique_ptr_get(repr) } } - #[doc(hidden)] unsafe fn __release(repr: MaybeUninit<*mut c_void>) -> *mut Self { unsafe { T::__unique_ptr_release(repr) } } - #[doc(hidden)] unsafe fn __drop(repr: MaybeUninit<*mut c_void>) { unsafe { T::__unique_ptr_drop(repr) } } diff --git a/src/weak_ptr.rs b/src/weak_ptr.rs index 8a9f1a687..e9320f374 100644 --- a/src/weak_ptr.rs +++ b/src/weak_ptr.rs @@ -114,11 +114,9 @@ pub unsafe trait WeakPtrTarget { macro_rules! impl_weak_ptr_target { ($segment:expr, $name:expr, $ty:ty) => { unsafe impl WeakPtrTarget for $ty { - #[doc(hidden)] fn __typename(f: &mut fmt::Formatter) -> fmt::Result { f.write_str($name) } - #[doc(hidden)] unsafe fn __null(new: *mut c_void) { extern "C" { attr! { @@ -128,7 +126,6 @@ macro_rules! impl_weak_ptr_target { } unsafe { __null(new) } } - #[doc(hidden)] unsafe fn __clone(this: *const c_void, new: *mut c_void) { extern "C" { attr! { @@ -138,7 +135,6 @@ macro_rules! impl_weak_ptr_target { } unsafe { __clone(this, new) } } - #[doc(hidden)] unsafe fn __downgrade(shared: *const c_void, weak: *mut c_void) { extern "C" { attr! { @@ -148,7 +144,6 @@ macro_rules! impl_weak_ptr_target { } unsafe { __downgrade(shared, weak) } } - #[doc(hidden)] unsafe fn __upgrade(weak: *const c_void, shared: *mut c_void) { extern "C" { attr! { @@ -158,7 +153,6 @@ macro_rules! impl_weak_ptr_target { } unsafe { __upgrade(weak, shared) } } - #[doc(hidden)] unsafe fn __drop(this: *mut c_void) { extern "C" { attr! { diff --git a/syntax/attrs.rs b/syntax/attrs.rs index cb40295b9..46d010e0a 100644 --- a/syntax/attrs.rs +++ b/syntax/attrs.rs @@ -268,12 +268,17 @@ fn parse_rust_name_attribute(input: ParseStream) -> Result { } } +#[derive(Clone)] pub struct OtherAttrs(Vec); impl OtherAttrs { pub fn none() -> Self { OtherAttrs(Vec::new()) } + + pub fn extend(&mut self, other: Self) { + self.0.extend(other.0); + } } impl ToTokens for OtherAttrs { diff --git a/syntax/parse.rs b/syntax/parse.rs index dee24c2fa..1754c6006 100644 --- a/syntax/parse.rs +++ b/syntax/parse.rs @@ -360,7 +360,7 @@ fn parse_foreign_mod( let mut cfg = CfgExpr::Unconditional; let mut namespace = namespace.clone(); - attrs::parse( + let attrs = attrs::parse( cx, foreign_mod.attrs, attrs::Parser { @@ -374,11 +374,11 @@ fn parse_foreign_mod( for foreign in foreign_mod.items { match foreign { ForeignItem::Type(foreign) => { - let ety = parse_extern_type(cx, foreign, lang, trusted, &cfg, &namespace); + let ety = parse_extern_type(cx, foreign, lang, trusted, &cfg, &namespace, &attrs); items.push(ety); } ForeignItem::Fn(foreign) => { - match parse_extern_fn(cx, foreign, lang, trusted, &cfg, &namespace) { + match parse_extern_fn(cx, foreign, lang, trusted, &cfg, &namespace, &attrs) { Ok(efn) => items.push(efn), Err(err) => cx.push(err), } @@ -393,7 +393,7 @@ fn parse_foreign_mod( } } ForeignItem::Verbatim(tokens) => { - match parse_extern_verbatim(cx, tokens, lang, trusted, &cfg, &namespace) { + match parse_extern_verbatim(cx, tokens, lang, trusted, &cfg, &namespace, &attrs) { Ok(api) => items.push(api), Err(err) => cx.push(err), } @@ -463,6 +463,7 @@ fn parse_extern_type( trusted: bool, extern_block_cfg: &CfgExpr, namespace: &Namespace, + attrs: &OtherAttrs, ) -> Api { let mut cfg = extern_block_cfg.clone(); let mut doc = Doc::new(); @@ -470,7 +471,8 @@ fn parse_extern_type( let mut namespace = namespace.clone(); let mut cxx_name = None; let mut rust_name = None; - let attrs = attrs::parse( + let mut attrs = attrs.clone(); + attrs.extend(attrs::parse( cx, foreign_type.attrs, attrs::Parser { @@ -482,7 +484,7 @@ fn parse_extern_type( rust_name: Some(&mut rust_name), ..Default::default() }, - ); + )); let type_token = foreign_type.type_token; let visibility = visibility_pub(&foreign_type.vis, type_token.span); @@ -523,13 +525,15 @@ fn parse_extern_fn( trusted: bool, extern_block_cfg: &CfgExpr, namespace: &Namespace, + attrs: &OtherAttrs, ) -> Result { let mut cfg = extern_block_cfg.clone(); let mut doc = Doc::new(); let mut namespace = namespace.clone(); let mut cxx_name = None; let mut rust_name = None; - let attrs = attrs::parse( + let mut attrs = attrs.clone(); + attrs.extend(attrs::parse( cx, mem::take(&mut foreign_fn.attrs), attrs::Parser { @@ -540,7 +544,7 @@ fn parse_extern_fn( rust_name: Some(&mut rust_name), ..Default::default() }, - ); + )); let generics = &foreign_fn.sig.generics; if generics.where_clause.is_some() @@ -708,20 +712,22 @@ fn parse_extern_verbatim( trusted: bool, extern_block_cfg: &CfgExpr, namespace: &Namespace, + attrs: &OtherAttrs, ) -> Result { |input: ParseStream| -> Result { - let attrs = input.call(Attribute::parse_outer)?; + let unparsed_attrs = input.call(Attribute::parse_outer)?; let visibility: Visibility = input.parse()?; if input.peek(Token![type]) { parse_extern_verbatim_type( cx, - attrs, + unparsed_attrs, visibility, input, lang, trusted, extern_block_cfg, namespace, + attrs, ) } else if input.peek(Token![fn]) { parse_extern_verbatim_fn(input) @@ -738,13 +744,14 @@ fn parse_extern_verbatim( fn parse_extern_verbatim_type( cx: &mut Errors, - attrs: Vec, + unparsed_attrs: Vec, visibility: Visibility, input: ParseStream, lang: Lang, trusted: bool, extern_block_cfg: &CfgExpr, namespace: &Namespace, + attrs: &OtherAttrs, ) -> Result { let type_token: Token![type] = input.parse()?; let ident: Ident = input.parse()?; @@ -791,7 +798,7 @@ fn parse_extern_verbatim_type( // type Alias = crate::path::to::Type; parse_type_alias( cx, - attrs, + unparsed_attrs, visibility, type_token, ident, @@ -800,12 +807,13 @@ fn parse_extern_verbatim_type( lang, extern_block_cfg, namespace, + attrs, ) } else if lookahead.peek(Token![:]) || lookahead.peek(Token![;]) { // type Opaque: Bound2 + Bound2; parse_extern_type_bounded( cx, - attrs, + unparsed_attrs, visibility, type_token, ident, @@ -815,6 +823,7 @@ fn parse_extern_verbatim_type( trusted, extern_block_cfg, namespace, + attrs, ) } else { Err(lookahead.error()) @@ -829,7 +838,7 @@ fn parse_extern_verbatim_fn(input: ParseStream) -> Result { fn parse_type_alias( cx: &mut Errors, - attrs: Vec, + unparsed_attrs: Vec, visibility: Visibility, type_token: Token![type], ident: Ident, @@ -838,6 +847,7 @@ fn parse_type_alias( lang: Lang, extern_block_cfg: &CfgExpr, namespace: &Namespace, + attrs: &OtherAttrs, ) -> Result { let eq_token: Token![=] = input.parse()?; let ty: RustType = input.parse()?; @@ -849,9 +859,10 @@ fn parse_type_alias( let mut namespace = namespace.clone(); let mut cxx_name = None; let mut rust_name = None; - let attrs = attrs::parse( + let mut attrs = attrs.clone(); + attrs.extend(attrs::parse( cx, - attrs, + unparsed_attrs, attrs::Parser { cfg: Some(&mut cfg), doc: Some(&mut doc), @@ -861,7 +872,7 @@ fn parse_type_alias( rust_name: Some(&mut rust_name), ..Default::default() }, - ); + )); if lang == Lang::Rust { let span = quote!(#type_token #semi_token); @@ -889,7 +900,7 @@ fn parse_type_alias( fn parse_extern_type_bounded( cx: &mut Errors, - attrs: Vec, + unparsed_attrs: Vec, visibility: Visibility, type_token: Token![type], ident: Ident, @@ -899,6 +910,7 @@ fn parse_extern_type_bounded( trusted: bool, extern_block_cfg: &CfgExpr, namespace: &Namespace, + attrs: &OtherAttrs, ) -> Result { let mut bounds = Vec::new(); let colon_token: Option = input.parse()?; @@ -939,9 +951,10 @@ fn parse_extern_type_bounded( let mut namespace = namespace.clone(); let mut cxx_name = None; let mut rust_name = None; - let attrs = attrs::parse( + let mut attrs = attrs.clone(); + attrs.extend(attrs::parse( cx, - attrs, + unparsed_attrs, attrs::Parser { cfg: Some(&mut cfg), doc: Some(&mut doc), @@ -951,7 +964,7 @@ fn parse_extern_type_bounded( rust_name: Some(&mut rust_name), ..Default::default() }, - ); + )); let visibility = visibility_pub(&visibility, type_token.span); let name = pair(namespace, &ident, cxx_name, rust_name); diff --git a/tests/BUCK b/tests/BUCK index d131ddb99..d45accd74 100644 --- a/tests/BUCK +++ b/tests/BUCK @@ -3,6 +3,7 @@ load("//tools/buck:rust_cxx_bridge.bzl", "rust_cxx_bridge") rust_test( name = "test", srcs = ["test.rs"], + edition = "2018", deps = [ ":ffi", "//:cxx", @@ -17,6 +18,7 @@ rust_library( "ffi/module.rs", ], crate = "cxx_test_suite", + edition = "2018", deps = [ ":impl", "//:cxx", diff --git a/tests/BUILD b/tests/BUILD index 4803e13b4..3c25d9633 100644 --- a/tests/BUILD +++ b/tests/BUILD @@ -6,6 +6,7 @@ rust_test( name = "test", size = "small", srcs = ["test.rs"], + edition = "2018", deps = [ ":cxx_test_suite", "//:cxx", @@ -19,6 +20,7 @@ rust_library( "ffi/lib.rs", "ffi/module.rs", ], + edition = "2018", deps = [ ":impl", "//:cxx", diff --git a/tests/compiletest.rs b/tests/compiletest.rs index d2b516f5c..cd58514f1 100644 --- a/tests/compiletest.rs +++ b/tests/compiletest.rs @@ -1,5 +1,7 @@ +#[allow(unused_attributes)] #[rustversion::attr(not(nightly), ignore)] #[cfg_attr(skip_ui_tests, ignore)] +#[cfg_attr(miri, ignore)] #[test] fn ui() { let t = trybuild::TestCases::new(); diff --git a/tests/ffi/lib.rs b/tests/ffi/lib.rs index d58c8eba7..c3174bbca 100644 --- a/tests/ffi/lib.rs +++ b/tests/ffi/lib.rs @@ -1,5 +1,6 @@ #![allow( clippy::boxed_local, + clippy::derive_partial_eq_without_eq, clippy::just_underscores_and_digits, clippy::let_underscore_drop, clippy::missing_safety_doc, @@ -15,7 +16,7 @@ pub mod cast; pub mod module; -use cxx::{CxxString, CxxVector, SharedPtr, UniquePtr}; +use cxx::{type_id, CxxString, CxxVector, ExternType, SharedPtr, UniquePtr}; use std::fmt::{self, Display}; use std::mem::MaybeUninit; use std::os::raw::c_char; @@ -80,6 +81,7 @@ pub mod ffi { pub struct Array { a: [i32; 4], + b: Buffer, } #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] @@ -248,6 +250,10 @@ pub mod ffi { CVal2, } + extern "C++" { + type Buffer = crate::Buffer; + } + extern "Rust" { type R; @@ -412,6 +418,15 @@ impl ffi::Array { } } +#[derive(Default)] +#[repr(C)] +pub struct Buffer([c_char; 12]); + +unsafe impl ExternType for Buffer { + type Id = type_id!("tests::Buffer"); + type Kind = cxx::kind::Trivial; +} + #[derive(Debug)] struct Error; diff --git a/tests/ffi/tests.h b/tests/ffi/tests.h index e508a3f58..10cb37ae5 100644 --- a/tests/ffi/tests.h +++ b/tests/ffi/tests.h @@ -84,6 +84,8 @@ struct Borrow { const std::string &s; }; +typedef char Buffer[12]; + size_t c_return_primitive(); Shared c_return_shared(); ::A::AShared c_return_ns_shared(); diff --git a/tests/test.rs b/tests/test.rs index 13ce3456c..24d330bad 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -261,7 +261,10 @@ fn test_c_method_calls() { assert_eq!(2023, *ffi::Shared { z: 2023 }.c_method_mut_on_shared()); let val = 42; - let mut array = ffi::Array { a: [0, 0, 0, 0] }; + let mut array = ffi::Array { + a: [0, 0, 0, 0], + b: ffi::Buffer::default(), + }; array.c_set_array(val); assert_eq!(array.a.len() as i32 * val, array.r_get_array_sum()); } @@ -280,6 +283,31 @@ fn test_shared_ptr_weak_ptr() { assert!(weak_ptr.upgrade().is_null()); } +#[test] +fn test_unique_to_shared_ptr_string() { + let unique = ffi::c_return_unique_ptr_string(); + let ptr = &*unique as *const _; + let shared = unique.to_shared(); + assert_eq!(&*shared as *const _, ptr); + assert_eq!(&*shared, "2020"); +} + +#[test] +fn test_unique_to_shared_ptr_cpp_type() { + let unique = ffi::c_return_unique_ptr(); + let ptr = &*unique as *const _; + let shared = unique.to_shared(); + assert_eq!(&*shared as *const _, ptr); +} + +#[test] +fn test_unique_to_shared_ptr_null() { + let unique = cxx::UniquePtr::::null(); + assert!(unique.is_null()); + let shared = unique.to_shared(); + assert!(shared.is_null()); +} + #[test] fn test_c_ns_method_calls() { let unique_ptr = ffi2::ns_c_return_unique_ptr_ns(); diff --git a/tests/ui/deny_elided_lifetimes.stderr b/tests/ui/deny_elided_lifetimes.stderr index 8b965af36..857bb5b7f 100644 --- a/tests/ui/deny_elided_lifetimes.stderr +++ b/tests/ui/deny_elided_lifetimes.stderr @@ -2,14 +2,14 @@ error: hidden lifetime parameters in types are deprecated --> tests/ui/deny_elided_lifetimes.rs:21:50 | 21 | fn lifetime_elided(s: &i32) -> UniquePtr; - | ^^^ expected named lifetime parameter + | ^^^ expected lifetime parameter | note: the lint level is defined here --> tests/ui/deny_elided_lifetimes.rs:1:9 | 1 | #![deny(elided_lifetimes_in_paths)] | ^^^^^^^^^^^^^^^^^^^^^^^^^ -help: consider using the `'_` lifetime +help: indicate the anonymous lifetime | 21 | fn lifetime_elided(s: &i32) -> UniquePtr>; - | ~~~~~~~ + | ++++ diff --git a/tests/ui/deny_missing_docs.stderr b/tests/ui/deny_missing_docs.stderr index 8f4c191dc..54ab987b4 100644 --- a/tests/ui/deny_missing_docs.stderr +++ b/tests/ui/deny_missing_docs.stderr @@ -38,10 +38,10 @@ error: missing documentation for a type alias --> tests/ui/deny_missing_docs.rs:49:9 | 49 | pub type UndocumentedTypeAlias = crate::bindgen::UndocumentedTypeAlias; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: missing documentation for a function --> tests/ui/deny_missing_docs.rs:54:9 | 54 | pub fn undocumented_foreign_fn() -> u8; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/ui/enum_match_without_wildcard.stderr b/tests/ui/enum_match_without_wildcard.stderr index 033c2c9f1..3a7b32051 100644 --- a/tests/ui/enum_match_without_wildcard.stderr +++ b/tests/ui/enum_match_without_wildcard.stderr @@ -1,11 +1,17 @@ error[E0004]: non-exhaustive patterns: `A { repr: 2_u8..=u8::MAX }` not covered --> tests/ui/enum_match_without_wildcard.rs:12:11 | -3 | enum A { - | ------ `ffi::A` defined here -... 12 | match a { | ^ pattern `A { repr: 2_u8..=u8::MAX }` not covered | - = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms +note: `ffi::A` defined here + --> tests/ui/enum_match_without_wildcard.rs:3:10 + | +3 | enum A { + | ^ = note: the matched value is of type `ffi::A` +help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown + | +14 ~ ffi::A::FieldB => 2021, +15 ~ A { repr: 2_u8..=u8::MAX } => todo!(), + | diff --git a/tests/ui/nonlocal_rust_type.stderr b/tests/ui/nonlocal_rust_type.stderr index dc510d894..dee91955f 100644 --- a/tests/ui/nonlocal_rust_type.stderr +++ b/tests/ui/nonlocal_rust_type.stderr @@ -1,4 +1,4 @@ -error[E0117]: only traits defined in the current crate can be implemented for arbitrary types +error[E0117]: only traits defined in the current crate can be implemented for types defined outside of the crate --> tests/ui/nonlocal_rust_type.rs:10:9 | 10 | type OptBuilder<'a>; @@ -9,7 +9,7 @@ error[E0117]: only traits defined in the current crate can be implemented for ar | = note: define and implement a trait or new type instead -error[E0117]: only traits defined in the current crate can be implemented for arbitrary types +error[E0117]: only traits defined in the current crate can be implemented for types defined outside of the crate --> tests/ui/nonlocal_rust_type.rs:14:13 | 14 | rs: Box>, diff --git a/tests/ui/unique_ptr_twice.stderr b/tests/ui/unique_ptr_twice.stderr index a3ed0d611..1315e0644 100644 --- a/tests/ui/unique_ptr_twice.stderr +++ b/tests/ui/unique_ptr_twice.stderr @@ -2,7 +2,7 @@ error[E0119]: conflicting implementations of trait `cxx::memory::UniquePtrTarget --> tests/ui/unique_ptr_twice.rs:16:5 | 7 | impl UniquePtr {} - | ----------------- first implementation here + | ---------------- first implementation here ... 16 | impl UniquePtr {} - | ^^^^^^^^^^^^^^^^^ conflicting implementation for `here::C` + | ^^^^^^^^^^^^^^^^ conflicting implementation for `here::C` diff --git a/tests/ui/unpin_impl.rs b/tests/ui/unpin_impl.rs deleted file mode 100644 index 129fcb11d..000000000 --- a/tests/ui/unpin_impl.rs +++ /dev/null @@ -1,10 +0,0 @@ -#[cxx::bridge] -mod ffi { - extern "C++" { - type Opaque; - } -} - -impl Unpin for ffi::Opaque {} - -fn main() {} diff --git a/tests/ui/unpin_impl.stderr b/tests/ui/unpin_impl.stderr deleted file mode 100644 index afe5a8066..000000000 --- a/tests/ui/unpin_impl.stderr +++ /dev/null @@ -1,18 +0,0 @@ -error[E0282]: type annotations needed - --> tests/ui/unpin_impl.rs:4:14 - | -4 | type Opaque; - | ^^^^^^ cannot infer type - -error[E0283]: type annotations needed - --> tests/ui/unpin_impl.rs:1:1 - | -1 | #[cxx::bridge] - | ^^^^^^^^^^^^^^ cannot infer type - | -note: multiple `impl`s satisfying `ffi::Opaque: __AmbiguousIfImpl<_>` found - --> tests/ui/unpin_impl.rs:1:1 - | -1 | #[cxx::bridge] - | ^^^^^^^^^^^^^^ - = note: this error originates in the attribute macro `cxx::bridge` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/unsupported_elided.stderr b/tests/ui/unsupported_elided.stderr index e9ea87b06..2fa0d0591 100644 --- a/tests/ui/unsupported_elided.stderr +++ b/tests/ui/unsupported_elided.stderr @@ -2,9 +2,13 @@ error[E0726]: implicit elided lifetime not allowed here --> tests/ui/unsupported_elided.rs:6:14 | 6 | type T; - | ^- help: indicate the anonymous lifetime: `<'_>` + | ^ expected lifetime parameter | = note: assuming a `'static` lifetime... +help: indicate the anonymous lifetime + | +6 | type T<'_>; + | ++++ error[E0106]: missing lifetime specifier --> tests/ui/unsupported_elided.rs:8:24 diff --git a/third-party/BUCK b/third-party/BUCK index ffc078d07..85397f861 100644 --- a/third-party/BUCK +++ b/third-party/BUCK @@ -5,30 +5,43 @@ load("//tools/buck:rust_library.bzl", "rust_library") rust_library( name = "bitflags", srcs = glob(["vendor/bitflags-1.3.2/src/**"]), + edition = "2018", ) rust_library( name = "cc", - srcs = glob(["vendor/cc-1.0.72/src/**"]), + srcs = glob(["vendor/cc-1.0.73/src/**"]), + edition = "2018", visibility = ["PUBLIC"], ) rust_library( name = "clap", - srcs = glob(["vendor/clap-3.0.10/src/**"]), + srcs = glob(["vendor/clap-3.2.8/src/**"]), + edition = "2021", features = ["std"], visibility = ["PUBLIC"], deps = [ ":bitflags", + ":clap_lex", ":indexmap", - ":os_str_bytes", ":textwrap", ], ) +rust_library( + name = "clap_lex", + srcs = glob(["vendor/clap_lex-0.2.4/src/**"]), + edition = "2021", + deps = [ + ":os_str_bytes", + ], +) + rust_library( name = "codespan-reporting", srcs = glob(["vendor/codespan-reporting-0.11.1/src/**"]), + edition = "2018", visibility = ["PUBLIC"], deps = [ ":termcolor", @@ -38,28 +51,24 @@ rust_library( rust_library( name = "hashbrown", - srcs = glob(["vendor/hashbrown-0.11.2/src/**"]), + srcs = glob(["vendor/hashbrown-0.12.1/src/**"]), + edition = "2021", features = ["raw"], ) rust_library( name = "indexmap", - srcs = glob(["vendor/indexmap-1.8.0/src/**"]), + srcs = glob(["vendor/indexmap-1.9.1/src/**"]), + edition = "2021", features = ["std"], rustc_flags = ["--cfg=has_std"], deps = [":hashbrown"], ) -rust_library( - name = "memchr", - srcs = glob(["vendor/memchr-2.4.1/src/**"]), - crate_root = "vendor/memchr-2.4.1/src/lib.rs", - features = ["std"], -) - rust_library( name = "once_cell", - srcs = glob(["vendor/once_cell-1.9.0/src/**"]), + srcs = glob(["vendor/once_cell-1.13.0/src/**"]), + edition = "2018", features = [ "alloc", "std", @@ -69,29 +78,31 @@ rust_library( rust_library( name = "os_str_bytes", - srcs = glob(["vendor/os_str_bytes-6.0.0/src/**"]), + srcs = glob(["vendor/os_str_bytes-6.1.0/src/**"]), + edition = "2018", features = [ - "memchr", "raw_os_str", ], - deps = [":memchr"], ) rust_library( name = "proc-macro2", - srcs = glob(["vendor/proc-macro2-1.0.36/src/**"]), - build_script = "vendor/proc-macro2-1.0.36/build.rs", + srcs = glob(["vendor/proc-macro2-1.0.40/src/**"]), + build_script = "vendor/proc-macro2-1.0.40/build.rs", + edition = "2018", features = [ "proc-macro", "span-locations", ], visibility = ["PUBLIC"], - deps = [":unicode-xid"], + deps = [":unicode-ident"], ) rust_library( name = "quote", - srcs = glob(["vendor/quote-1.0.14/src/**"]), + srcs = glob(["vendor/quote-1.0.20/src/**"]), + build_script = "vendor/quote-1.0.20/build.rs", + edition = "2018", features = ["proc-macro"], visibility = ["PUBLIC"], deps = [":proc-macro2"], @@ -100,14 +111,16 @@ rust_library( rust_library( name = "scratch", srcs = glob(["vendor/scratch-1.0.1/src/**"]), + edition = "2018", env = {"OUT_DIR": ""}, visibility = ["PUBLIC"], ) rust_library( name = "syn", - srcs = glob(["vendor/syn-1.0.85/src/**"]), - build_script = "vendor/syn-1.0.85/build.rs", + srcs = glob(["vendor/syn-1.0.98/src/**"]), + build_script = "vendor/syn-1.0.98/build.rs", + edition = "2018", features = [ "clone-impls", "derive", @@ -120,27 +133,31 @@ rust_library( deps = [ ":proc-macro2", ":quote", - ":unicode-xid", + ":unicode-ident", ], ) rust_library( name = "termcolor", - srcs = glob(["vendor/termcolor-1.1.2/src/**"]), + srcs = glob(["vendor/termcolor-1.1.3/src/**"]), + edition = "2018", ) rust_library( name = "textwrap", - srcs = glob(["vendor/textwrap-0.14.2/src/**"]), + srcs = glob(["vendor/textwrap-0.15.0/src/**"]), + edition = "2018", deps = [":unicode-width"], ) rust_library( - name = "unicode-width", - srcs = glob(["vendor/unicode-width-0.1.9/src/**"]), + name = "unicode-ident", + srcs = glob(["vendor/unicode-ident-1.0.1/src/**"]), + edition = "2018", ) rust_library( - name = "unicode-xid", - srcs = glob(["vendor/unicode-xid-0.2.2/src/**"]), + name = "unicode-width", + srcs = glob(["vendor/unicode-width-0.1.9/src/**"]), + edition = "2018", ) diff --git a/third-party/BUILD b/third-party/BUILD index d83083618..aa79da3d0 100644 --- a/third-party/BUILD +++ b/third-party/BUILD @@ -8,30 +8,43 @@ load( rust_library( name = "bitflags", srcs = glob(["vendor/bitflags-1.3.2/src/**"]), + edition = "2018", ) rust_library( name = "cc", - srcs = glob(["vendor/cc-1.0.72/src/**"]), + srcs = glob(["vendor/cc-1.0.73/src/**"]), + edition = "2018", visibility = ["//visibility:public"], ) rust_library( name = "clap", - srcs = glob(["vendor/clap-3.0.10/src/**"]), + srcs = glob(["vendor/clap-3.2.8/src/**"]), crate_features = ["std"], + edition = "2021", visibility = ["//visibility:public"], deps = [ ":bitflags", + ":clap_lex", ":indexmap", - ":os_str_bytes", ":textwrap", ], ) +rust_library( + name = "clap_lex", + srcs = glob(["vendor/clap_lex-0.2.4/src/**"]), + edition = "2021", + deps = [ + ":os_str_bytes", + ], +) + rust_library( name = "codespan-reporting", srcs = glob(["vendor/codespan-reporting-0.11.1/src/**"]), + edition = "2018", visibility = ["//visibility:public"], deps = [ ":termcolor", @@ -41,86 +54,97 @@ rust_library( rust_library( name = "hashbrown", - srcs = glob(["vendor/hashbrown-0.11.2/src/**"]), + srcs = glob(["vendor/hashbrown-0.12.1/src/**"]), crate_features = ["raw"], + edition = "2021", ) rust_library( name = "indexmap", - srcs = glob(["vendor/indexmap-1.8.0/src/**"]), + srcs = glob(["vendor/indexmap-1.9.1/src/**"]), crate_features = ["std"], + edition = "2021", rustc_flags = ["--cfg=has_std"], deps = [":hashbrown"], ) -rust_library( - name = "memchr", - srcs = glob(["vendor/memchr-2.4.1/src/**/*.rs"]), - crate_features = ["std"], -) - rust_library( name = "once_cell", - srcs = glob(["vendor/once_cell-1.9.0/src/**"]), + srcs = glob(["vendor/once_cell-1.13.0/src/**"]), crate_features = [ "alloc", "std", ], + edition = "2018", visibility = ["//visibility:public"], ) rust_library( name = "os_str_bytes", - srcs = glob(["vendor/os_str_bytes-6.0.0/src/**"]), + srcs = glob(["vendor/os_str_bytes-6.1.0/src/**"]), crate_features = [ - "memchr", "raw_os_str", ], - deps = [":memchr"], + edition = "2018", ) rust_library( name = "proc-macro2", - srcs = glob(["vendor/proc-macro2-1.0.36/src/**"]), + srcs = glob(["vendor/proc-macro2-1.0.40/src/**"]), crate_features = [ "proc-macro", "span-locations", ], + edition = "2018", visibility = ["//visibility:public"], deps = [ ":proc-macro2@build", - ":unicode-xid", + ":unicode-ident", ], ) cargo_build_script( name = "proc-macro2@build", - srcs = ["vendor/proc-macro2-1.0.36/build.rs"], + srcs = ["vendor/proc-macro2-1.0.40/build.rs"], crate_features = [ "proc-macro", "span-locations", ], crate_name = "build", + edition = "2018", ) rust_library( name = "quote", - srcs = glob(["vendor/quote-1.0.14/src/**"]), + srcs = glob(["vendor/quote-1.0.20/src/**"]), crate_features = ["proc-macro"], + edition = "2018", visibility = ["//visibility:public"], - deps = [":proc-macro2"], + deps = [ + ":proc-macro2", + ":quote@build", + ], +) + +cargo_build_script( + name = "quote@build", + srcs = ["vendor/quote-1.0.20/build.rs"], + crate_features = ["proc-macro"], + crate_name = "build", + edition = "2018", ) rust_library( name = "scratch", srcs = glob(["vendor/scratch-1.0.1/src/**"]), + edition = "2018", rustc_env = {"OUT_DIR": ""}, visibility = ["//visibility:public"], ) rust_library( name = "syn", - srcs = glob(["vendor/syn-1.0.85/src/**"]), + srcs = glob(["vendor/syn-1.0.98/src/**"]), crate_features = [ "clone-impls", "derive", @@ -129,18 +153,19 @@ rust_library( "printing", "proc-macro", ], + edition = "2018", visibility = ["//visibility:public"], deps = [ ":proc-macro2", ":quote", ":syn@build", - ":unicode-xid", + ":unicode-ident", ], ) cargo_build_script( name = "syn@build", - srcs = ["vendor/syn-1.0.85/build.rs"], + srcs = ["vendor/syn-1.0.98/build.rs"], crate_features = [ "clone-impls", "derive", @@ -150,25 +175,30 @@ cargo_build_script( "proc-macro", ], crate_name = "build", + edition = "2018", ) rust_library( name = "termcolor", - srcs = glob(["vendor/termcolor-1.1.2/src/**"]), + srcs = glob(["vendor/termcolor-1.1.3/src/**"]), + edition = "2018", ) rust_library( name = "textwrap", - srcs = glob(["vendor/textwrap-0.14.2/src/**"]), + srcs = glob(["vendor/textwrap-0.15.0/src/**"]), + edition = "2018", deps = [":unicode-width"], ) rust_library( - name = "unicode-width", - srcs = glob(["vendor/unicode-width-0.1.9/src/**"]), + name = "unicode-ident", + srcs = glob(["vendor/unicode-ident-1.0.1/src/**"]), + edition = "2018", ) rust_library( - name = "unicode-xid", - srcs = glob(["vendor/unicode-xid-0.2.2/src/**"]), + name = "unicode-width", + srcs = glob(["vendor/unicode-width-0.1.9/src/**"]), + edition = "2018", ) diff --git a/third-party/Cargo.lock b/third-party/Cargo.lock index 5b741be41..725100655 100644 --- a/third-party/Cargo.lock +++ b/third-party/Cargo.lock @@ -10,9 +10,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "bitflags" @@ -22,9 +22,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "cc" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" dependencies = [ "jobserver", ] @@ -37,26 +37,35 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clang-ast" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed6681036a96f9855a75b08a9f14199e212017508a967d1d1e868f575f7d8e9" +checksum = "d9c380e0de48337007dfc91b09eb75f567f5f08209437857fbaabbaf2e77e830" dependencies = [ "serde", ] [[package]] name = "clap" -version = "3.0.10" +version = "3.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a30c3bf9ff12dfe5dae53f0a96e0febcd18420d1c0e7fad77796d9d5c4b5375" +checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83" dependencies = [ "bitflags", + "clap_lex", "indexmap", - "os_str_bytes", "strsim", "textwrap", ] +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "codespan-reporting" version = "0.11.1" @@ -69,16 +78,16 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if", ] [[package]] name = "cxx" -version = "1.0.63" +version = "1.0.71" dependencies = [ "cc", "cxx-build", @@ -93,7 +102,7 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.63" +version = "1.0.71" dependencies = [ "cc", "codespan-reporting", @@ -108,7 +117,7 @@ dependencies = [ [[package]] name = "cxx-gen" -version = "0.7.63" +version = "0.7.71" dependencies = [ "codespan-reporting", "proc-macro2", @@ -127,7 +136,7 @@ dependencies = [ [[package]] name = "cxxbridge-cmd" -version = "1.0.63" +version = "1.0.71" dependencies = [ "clap", "codespan-reporting", @@ -138,11 +147,11 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.63" +version = "1.0.71" [[package]] name = "cxxbridge-macro" -version = "1.0.63" +version = "1.0.71" dependencies = [ "clang-ast", "cxx", @@ -165,19 +174,17 @@ dependencies = [ [[package]] name = "dissimilar" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ad93652f40969dead8d4bf897a41e9462095152eb21c56e5830537e41179dd" +checksum = "8c97b9233581d84b8e1e689cdd3a47b6f69770084fc246e86a7f78b0d9c1d4a5" [[package]] name = "flate2" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ - "cfg-if", "crc32fast", - "libc", "miniz_oxide", ] @@ -189,15 +196,15 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" [[package]] name = "indexmap" -version = "1.8.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg", "hashbrown", @@ -205,9 +212,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" [[package]] name = "jobserver" @@ -220,9 +227,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.112" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" [[package]] name = "link-cplusplus" @@ -233,12 +240,6 @@ dependencies = [ "cc", ] -[[package]] -name = "memchr" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" - [[package]] name = "memmap" version = "0.7.0" @@ -251,64 +252,60 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" dependencies = [ "adler", - "autocfg", ] [[package]] name = "once_cell" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" [[package]] name = "os_str_bytes" -version = "6.0.0" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr", -] +checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" [[package]] name = "pkg-config" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] name = "quote" -version = "1.0.14" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" dependencies = [ "proc-macro2", ] [[package]] name = "rustversion" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" +checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf" [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" [[package]] name = "scratch" @@ -318,18 +315,18 @@ checksum = "96311ef4a16462c757bb6a39152c40f58f31cd2602a40fceb937e2bc34e6cbab" [[package]] name = "serde" -version = "1.0.133" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a" +checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.133" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed201699328568d8d08208fdd080e3ff594e6c422e438b6705905da01005d537" +checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c" dependencies = [ "proc-macro2", "quote", @@ -338,9 +335,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.75" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c059c05b48c5c0067d4b4b2b4f0732dd65feb52daf7e0ea09cd87e7dadc1af79" +checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" dependencies = [ "itoa", "ryu", @@ -355,65 +352,66 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "1.0.85" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "termcolor" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" dependencies = [ "winapi-util", ] [[package]] name = "textwrap" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] [[package]] name = "trybuild" -version = "1.0.54" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04343ff86b62ca40bd5dca986aadf4f10c152a9ebe9a869e456b60fa85afd3f" +checksum = "764b9e244b482a9b81bde596aa37aa6f1347bf8007adab25e59f901b32b4e0a0" dependencies = [ "dissimilar", "glob", "once_cell", "serde", + "serde_derive", "serde_json", "termcolor", "toml", ] [[package]] -name = "unicode-width" -version = "0.1.9" +name = "unicode-ident" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" [[package]] -name = "unicode-xid" -version = "0.2.2" +name = "unicode-width" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "winapi" diff --git a/tools/bazel/vendor.bzl b/tools/bazel/vendor.bzl index 284705e59..b4dd253ee 100644 --- a/tools/bazel/vendor.bzl +++ b/tools/bazel/vendor.bzl @@ -2,8 +2,9 @@ of a crate in the current workspace. """ -load("@rules_rust//rust:repositories.bzl", "load_arbitrary_tool") load("@rules_rust//rust:defs.bzl", "rust_common") +load("@rules_rust//rust:repositories.bzl", "load_arbitrary_tool") +load("@rules_rust//rust/platform:triple.bzl", "get_host_triple") def _impl(repository_ctx): # Link cxx repository into @third-party. @@ -20,12 +21,8 @@ def _impl(repository_ctx): # Figure out which version of cargo to use. if repository_ctx.attr.target_triple: target_triple = repository_ctx.attr.target_triple - elif "mac" in repository_ctx.os.name: - target_triple = "x86_64-apple-darwin" - elif "windows" in repository_ctx.os.name: - target_triple = "x86_64-pc-windows-msvc" else: - target_triple = "x86_64-unknown-linux-gnu" + target_triple = get_host_triple(repository_ctx).str # Download cargo. load_arbitrary_tool( @@ -78,7 +75,6 @@ vendor = repository_rule( attrs = { "cargo_version": attr.string( doc = "The version of cargo to use", - default = rust_common.default_version, ), "cargo_iso_date": attr.string( doc = "The date of the tool (or None, if the version is a specific version)", diff --git a/tools/buck/rust_library.bzl b/tools/buck/rust_library.bzl index 67ec2ac7e..4c85614d6 100644 --- a/tools/buck/rust_library.bzl +++ b/tools/buck/rust_library.bzl @@ -3,6 +3,7 @@ load("//tools/buck:genrule.bzl", "genrule") def rust_library( name, srcs, + edition, features = [], rustc_flags = [], build_script = None, @@ -13,6 +14,7 @@ def rust_library( srcs = srcs + [build_script], crate = "build", crate_root = build_script, + edition = edition, features = features, rustc_flags = rustc_flags, ) @@ -28,6 +30,7 @@ def rust_library( native.rust_library( name = name, srcs = srcs, + edition = edition, features = features, rustc_flags = rustc_flags, **kwargs
-githubcrates-iodocs-rs +githubcrates-iodocs-rs