diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-11-04 18:12:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-04 18:12:48 +0100 |
| commit | a4f323ce9c00a1a51eae998c373103e23b622a7a (patch) | |
| tree | 0788c16493dc1a71ea5277855be55abb0eaf06af /tests/ui/layout | |
| parent | 46ae1555e26d0bc39651cdb249b2ae740d46f3a3 (diff) | |
| parent | 5a48fe2c202a7aff935daf6b7cc56a12ad0ae72a (diff) | |
| download | rust-a4f323ce9c00a1a51eae998c373103e23b622a7a.tar.gz rust-a4f323ce9c00a1a51eae998c373103e23b622a7a.zip | |
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.
Diffstat (limited to 'tests/ui/layout')
| -rw-r--r-- | tests/ui/layout/rust-call-abi-not-a-tuple-ice-81974.stderr | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/tests/ui/layout/rust-call-abi-not-a-tuple-ice-81974.stderr b/tests/ui/layout/rust-call-abi-not-a-tuple-ice-81974.stderr index cceaddf7803..206a6801065 100644 --- a/tests/ui/layout/rust-call-abi-not-a-tuple-ice-81974.stderr +++ b/tests/ui/layout/rust-call-abi-not-a-tuple-ice-81974.stderr @@ -71,6 +71,10 @@ LL | cachedcoso.call_once(1); | note: required by a bound in `call_once` --> $SRC_DIR/core/src/ops/function.rs:LL:COL +help: use a unary tuple instead + | +LL | cachedcoso.call_once((1,)); + | + ++ error: aborting due to 6 previous errors |
