It feels like I might be missing something obvious here, but:

We can do this (the exact function doesn't matter, the point is that it returns a tuple):

```
let (a, b) = x.quotientAndRemainder(dividingBy: y)
```

and this:

```
var (a, b) = x.quotientAndRemainder(dividingBy: y)
```

but not this:

```
(var a, let b) = x.quotientAndRemainder(dividingBy: y) // ERROR: 'let' cannot appear nested inside another 'var' or 'let' pattern
```

which is what I want, ie in the rest of this scope, I want `a`

to be mutable and `b`

to be a `let`

constant.

**Is there any simpler way of achieving this than the following?**

Workaround A:

```
let (_a, b) = x.quotientAndRemainder(dividingBy: y)
var a = _a
```

Workaround B:

```
guard case (var a, let b) = x.quotientAndRemainder(dividingBy: y), true
else { fatalError() }
```

Workaround C:

```
var a: Int
let b: Int
(a, b) = x.quotientAndRemainder(dividingBy: y)
```

**If not, would it be reasonable to allow** `(var a, let b) = … `

**?**