File tree 3 files changed +81
-0
lines changed
3 files changed +81
-0
lines changed Original file line number Diff line number Diff line change
1
+ // See https://github.com/rust-lang/rust/issues/88442
2
+ // run-rustfix
3
+ // edition:2018
4
+ // check-pass
5
+ #![allow(unused)]
6
+ #![warn(rust_2021_prelude_collisions)]
7
+
8
+ trait AnnotatableTryInto {
9
+ fn try_into<T>(self) -> Result<T, Self::Error>
10
+ where Self: std::convert::TryInto<T> {
11
+ std::convert::TryInto::try_into(self)
12
+ }
13
+ }
14
+
15
+ impl<T> AnnotatableTryInto for T where T: From<u8> {}
16
+
17
+ fn main() -> Result<(), &'static str> {
18
+ let x: u64 = 1;
19
+ AnnotatableTryInto::try_into::<usize>(x).or(Err("foo"))?.checked_sub(1);
20
+ //~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
21
+ //~| WARNING this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
22
+
23
+ AnnotatableTryInto::try_into::<usize>(x).or(Err("foo"))?;
24
+ //~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
25
+ //~| WARNING this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
26
+
27
+ Ok(())
28
+ }
Original file line number Diff line number Diff line change
1
+ // See https://github.com/rust-lang/rust/issues/88442
2
+ // run-rustfix
3
+ // edition:2018
4
+ // check-pass
5
+ #![ allow( unused) ]
6
+ #![ warn( rust_2021_prelude_collisions) ]
7
+
8
+ trait AnnotatableTryInto {
9
+ fn try_into < T > ( self ) -> Result < T , Self :: Error >
10
+ where Self : std:: convert:: TryInto < T > {
11
+ std:: convert:: TryInto :: try_into ( self )
12
+ }
13
+ }
14
+
15
+ impl < T > AnnotatableTryInto for T where T : From < u8 > { }
16
+
17
+ fn main ( ) -> Result < ( ) , & ' static str > {
18
+ let x: u64 = 1 ;
19
+ x. try_into :: < usize > ( ) . or ( Err ( "foo" ) ) ?. checked_sub ( 1 ) ;
20
+ //~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
21
+ //~| WARNING this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
22
+
23
+ x. try_into :: < usize > ( ) . or ( Err ( "foo" ) ) ?;
24
+ //~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
25
+ //~| WARNING this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
26
+
27
+ Ok ( ( ) )
28
+ }
Original file line number Diff line number Diff line change
1
+ warning: trait method `try_into` will become ambiguous in Rust 2021
2
+ --> $DIR/future-prelude-collision-turbofish.rs:19:5
3
+ |
4
+ LL | x.try_into::<usize>().or(Err("foo"))?.checked_sub(1);
5
+ | ^^^^^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `AnnotatableTryInto::try_into::<usize>(x)`
6
+ |
7
+ note: the lint level is defined here
8
+ --> $DIR/future-prelude-collision-turbofish.rs:6:9
9
+ |
10
+ LL | #![warn(rust_2021_prelude_collisions)]
11
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12
+ = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
13
+ = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/prelude.html>
14
+
15
+ warning: trait method `try_into` will become ambiguous in Rust 2021
16
+ --> $DIR/future-prelude-collision-turbofish.rs:23:5
17
+ |
18
+ LL | x.try_into::<usize>().or(Err("foo"))?;
19
+ | ^^^^^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `AnnotatableTryInto::try_into::<usize>(x)`
20
+ |
21
+ = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
22
+ = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/prelude.html>
23
+
24
+ warning: 2 warnings emitted
25
+
You can’t perform that action at this time.
0 commit comments