error[E0277]: can't compare `Vec<{integer}>` with `VecDeque<{integer}>`
--> src/main.rs:14:15
|
14 | let _ = b == a;
| ^^ no implementation for `Vec<{integer}> == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `Vec<{integer}>`
= help: the following other types implement trait `PartialEq<Rhs>`:
`Vec<T, A1>` implements `PartialEq<Vec<U, A2>>`
`Vec<T, A>` implements `PartialEq<&[U; N]>`
`Vec<T, A>` implements `PartialEq<&[U]>`
`Vec<T, A>` implements `PartialEq<&mut [U]>`
`Vec<T, A>` implements `PartialEq<[U; N]>`
`Vec<T, A>` implements `PartialEq<[U]>`
`Vec<u8>` implements `PartialEq<ByteStr>`
`Vec<u8>` implements `PartialEq<ByteString>`
error[E0277]: can't compare `Vec<{integer}>` with `Cow<'_, [{integer}]>`
--> src/main.rs:23:15
|
23 | let _ = b == a;
| ^^ no implementation for `Vec<{integer}> == Cow<'_, [{integer}]>`
|
= help: the trait `PartialEq<Cow<'_, [{integer}]>>` is not implemented for `Vec<{integer}>`
help: consider dereferencing both sides of the expression
|
23 | let _ = *b == *a;
| + +
error[E0277]: can't compare `&[{integer}]` with `VecDeque<{integer}>`
--> src/main.rs:33:15
|
33 | let _ = b == a;
| ^^ no implementation for `&[{integer}] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `&[{integer}]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `[{integer}; 1]` with `VecDeque<{integer}>`
--> src/main.rs:43:15
|
43 | let _ = b == a;
| ^^ no implementation for `[{integer}; 1] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `[{integer}; 1]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `&mut [{integer}]` with `VecDeque<{integer}>`
--> src/main.rs:53:15
|
53 | let _ = b == a;
| ^^ no implementation for `&mut [{integer}] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `&mut [{integer}]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `&[{integer}; 1]` with `VecDeque<{integer}>`
--> src/main.rs:64:15
|
64 | let _ = b == a;
| ^^ no implementation for `&[{integer}; 1] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `&[{integer}; 1]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `&mut [{integer}; 1]` with `VecDeque<{integer}>`
--> src/main.rs:75:15
|
75 | let _ = b == a;
| ^^ no implementation for `&mut [{integer}; 1] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `&mut [{integer}; 1]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `&mut [{integer}]` with `Cow<'_, [{integer}]>`
--> src/main.rs:85:15
|
85 | let _ = b == a;
| ^^ no implementation for `&mut [{integer}] == Cow<'_, [{integer}]>`
|
= help: the trait `PartialEq<Cow<'_, [{integer}]>>` is not implemented for `&mut [{integer}]`
help: consider dereferencing both sides of the expression
|
85 | let _ = *b == *a;
| + +
For more information about this error, try `rustc --explain E0277`.
error: could not compile `rustdoc_parse` (lib) due to 8 previous errors
dai@desktopwin11:~/vscode/rustdoc_parse$ RUST_BACKTRACE=1 cargo build
Compiling rustdoc_parse v0.1.0 (/home/dai/vscode/rustdoc_parse)
error[E0277]: can't compare `Vec<{integer}>` with `VecDeque<{integer}>`
--> src/lib.rs:13:15
|
13 | let _ = b == a;
| ^^ no implementation for `Vec<{integer}> == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `Vec<{integer}>`
= help: the following other types implement trait `PartialEq<Rhs>`:
`Vec<T, A1>` implements `PartialEq<Vec<U, A2>>`
`Vec<T, A>` implements `PartialEq<&[U; N]>`
`Vec<T, A>` implements `PartialEq<&[U]>`
`Vec<T, A>` implements `PartialEq<&mut [U]>`
`Vec<T, A>` implements `PartialEq<[U; N]>`
`Vec<T, A>` implements `PartialEq<[U]>`
`Vec<u8>` implements `PartialEq<ByteStr>`
`Vec<u8>` implements `PartialEq<ByteString>`
error[E0277]: can't compare `Vec<{integer}>` with `Cow<'_, [{integer}]>`
--> src/lib.rs:22:15
|
22 | let _ = b == a;
| ^^ no implementation for `Vec<{integer}> == Cow<'_, [{integer}]>`
|
= help: the trait `PartialEq<Cow<'_, [{integer}]>>` is not implemented for `Vec<{integer}>`
help: consider dereferencing both sides of the expression
|
22 | let _ = *b == *a;
| + +
error[E0277]: can't compare `&[{integer}]` with `VecDeque<{integer}>`
--> src/lib.rs:32:15
|
32 | let _ = b == a;
| ^^ no implementation for `&[{integer}] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `&[{integer}]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `[{integer}; 1]` with `VecDeque<{integer}>`
--> src/lib.rs:42:15
|
42 | let _ = b == a;
| ^^ no implementation for `[{integer}; 1] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `[{integer}; 1]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `&mut [{integer}]` with `VecDeque<{integer}>`
--> src/lib.rs:52:15
|
52 | let _ = b == a;
| ^^ no implementation for `&mut [{integer}] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `&mut [{integer}]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `&[{integer}; 1]` with `VecDeque<{integer}>`
--> src/lib.rs:63:15
|
63 | let _ = b == a;
| ^^ no implementation for `&[{integer}; 1] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `&[{integer}; 1]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `&mut [{integer}; 1]` with `VecDeque<{integer}>`
--> src/lib.rs:74:15
|
74 | let _ = b == a;
| ^^ no implementation for `&mut [{integer}; 1] == VecDeque<{integer}>`
|
= help: the trait `PartialEq<VecDeque<{integer}>>` is not implemented for `&mut [{integer}; 1]`
= help: the following other types implement trait `PartialEq<Rhs>`:
`&[T]` implements `PartialEq<Vec<U, A>>`
`&[T]` implements `PartialEq<[U; N]>`
`&[u8; N]` implements `PartialEq<ByteStr>`
`&[u8; N]` implements `PartialEq<ByteString>`
`&[u8]` implements `PartialEq<ByteStr>`
`&[u8]` implements `PartialEq<ByteString>`
`&mut [T]` implements `PartialEq<Vec<U, A>>`
`&mut [T]` implements `PartialEq<[U; N]>`
and 11 others
error[E0277]: can't compare `&mut [{integer}]` with `Cow<'_, [{integer}]>`
--> src/lib.rs:84:15
|
84 | let _ = b == a;
| ^^ no implementation for `&mut [{integer}] == Cow<'_, [{integer}]>`
|
= help: the trait `PartialEq<Cow<'_, [{integer}]>>` is not implemented for `&mut [{integer}]`
help: consider dereferencing both sides of the expression
|
84 | let _ = *b == *a;
| + +
For more information about this error, try `rustc --explain E0277`.
error: could not compile `rustdoc_parse` (lib) due to 8 previous errors
While a == b works, b == a often fails to compile for many standard collection combinations (e.g., VecDeque vs Vec, Vec vs Array). This violates the intuitive expectation of symmetry in equality comparisons.
Related issue is #149017
I tried this code:
I expected that this code successfully compiled
Instead, compile error happened.
Meta
rustc --version --verbose:Backtrace