<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">It feels like there are three basic groups of APIs:<div class=""><br class=""></div><div class=""><ol class="MailOutline"><li class="">An API that returns a result that should be used.</li><li class="">An API that returns a result that can be used.</li><li class="">An API that returns no result (void).</li></ol><div class=""><br class=""></div><div class="">I completely agree that if a result is returned, the intent of the API is more than likely expecting the caller to use it.</div><div class=""><br class=""></div><div class="">My primary preference is to just say that's the way it is. I don't particular like any of the attributes. Also, we have a mechanism to discard the result already:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">let _ = discardableResult()</font></div><div class=""><br class=""></div><div class="">For resiliency, is adding a `@discardable` attribute a breaking change? Removing it?</div></div><div class=""><br class=""></div><div class="">So +1 on changing the default to always warn on unused results, -1 on implementing an attribute to allow API designers to mark it as discardable; I'd rather have a `void` overload that did it instead an attribute.</div><div class=""><br class=""></div><div class="">-David</div></body></html>