rust/compiler/rustc_trait_selection
Matthias Krüger a4f323ce9c
Rollup merge of #132583 - mejrs:tuples, r=compiler-errors
Suggest creating unary tuples when types don't match a trait

When you want to have a variadic function, a common workaround to implement this is to create a trait and then implement that trait for various tuples. For example in `pyo3` there exists
```rust
/// Calls the object with only positional arguments.
pub fn call1(&self, args: impl IntoPy<Py<PyTuple>>) -> PyResult<&PyAny> {
   ...
}
```

with various impls like
```rust
impl<A: IntoPy<PyObject> IntoPy<Py<PyAny>> for (A,)
impl<A: IntoPy<PyObject, B: IntoPy<PyObject> IntoPy<Py<PyAny>> for (A, B)
... etc
```

This means that if you want to call the method with a single item you have to create a unary tuple, like `(x,)`, rather than just `x`.

This PR implements a suggestion to do that, if applicable.
2024-11-04 18:12:48 +01:00
..
src Rollup merge of #132583 - mejrs:tuples, r=compiler-errors 2024-11-04 18:12:48 +01:00
Cargo.toml compiler: Replace rustc_target with _abi in _trait_selection 2024-11-02 20:31:47 -07:00
messages.ftl Emit specific message for time<0.3.35 inference failure 2024-08-28 22:53:02 +00:00