I disagree.
There is a large, although subtle, difference between a local variable, which holds a concrete instance of a value, and a stored property of a struct, which describes the shape of a certain type of data.
The declaration of a local variable uses let or var to specify whether the instance can be mutated. This is local control: the decision about mutability takes place in the same scope as any potential mutations.
The declaration of a struct defines the ways in which instances of that struct can be used. This is non-local control: the author of the struct controls what users can do with their own instances of it.
• • •
Declaring a struct property with var says, “You can modify this part of the value on your local vars, if you like.”
Declaring a struct property with let says, “You cannot modify this part of the value, not even on your own local vars.”
That is quite a restrictive statement. It amounts to the author of the struct deciding, “If someone creates a mutable instance, I still won’t let them modify this part of it even if they want to, despite the fact they declared their instance with var.”
That requires a strong reason.
• • •
The decision about mutability of a concrete instance rightly belongs to the local scope where that instance was created. The programmer who declares a local variable is in the best position to decide whether it should be mutable or immutable. The author of the struct should not lightly prevent them from doing so.
Only when the author of the struct knows that letting users modify a property would cause problems, such as broken invariants, does it make sense to prevent that.
And even then, those properties should still generally be declared private(set), so that the author of the struct can provide functions which perform mutations while maintaining the invariants.
The situations where let makes sense for a stored property of a struct are vanishingly rare.
Declaring a struct property with let means, “There is no possible situation in which anyone, anywhere, could ever have a valid reason to change this part of the value of any instance of this struct, even an instance they themself created with the express purpose and intention of changing its properties.”