To me documentation plus the type signatures are generally enough. However I could probably still agree with you if mutating was also used in classes. What&#39;s the point of having it only on structures?<br><div class="gmail_quote"><div dir="ltr">On Fri, Dec 25, 2015 at 12:32 T.J. Usiyan &lt;<a href="mailto:griotspeak@gmail.com">griotspeak@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span><br><div><i><span style="line-height:1.5"><br></span></i></div></span><div>I don’t understand why we need the `mutating` keyword in the first place. Is it for readability? Right now the compiler knows when a function mutates a property and forces us to write `mutating`. Couldn’t it just fail compiling when try to call a mutation function but we’re not allowed?</div><div><br></div></div></blockquote><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>I strongly disagree with this sentiment. I agree that the compiler can figure it out without us in many cases but I appreciate knowing *explicitly* which parts of an API will mutate a value. It is helpful for both the vendor and consumer of the API to require that keyword.  </div></div><br></div></div>
</blockquote></div>