title: Difference between String interpolation and String concatenation
body: <p><strong>When specifically dealing with non-optional <code>String</code> values, what could be the difference between String interpolation and String concatenation?</strong></p>
  
  <pre><code>struct MyModel {
      let value1: String
      let value2: String
      var displayNameByConcatenation: String {
          return value1 + "-" + value2
      }
      var displayNameByInterpolation: String {
          return "\(value1)-\(value2)"
      }
  }
  </code></pre>
  
  <ul>
  <li>Is there going to be any case where <code>displayNameByConcatenation</code> and <code>displayNameByInterpolation</code> are different? Like on long unicode strings?</li>
  <li>Is it possible to somehow override the behavior of operator <code>+</code> or the behavior of interpolation to make them different in above example?</li>
  <li>Is one faster/slower than the other?</li>
  </ul>
  
  <p>Note that from <a href="https://stackoverflow.com/questions/38675957/difference-between-string-interpolation-and-string-initializer-in-swift">this question</a> we learn that string interpolation will use the <code>description</code> of a CustomStringConvertible. But does <code>String</code> concatenation (operator <code>+</code>) also calls the <code>description</code>?</p>