UnsafeRawPointer assumingMemoryBound vs. bindMemory : <p>Can anyone explain what is difference between <code>UnsafeRawPointer.assumimgMemoryBound(to:)</code> and <code>UnsafeRawPointer.bindMemory(to:capacity:)</code>?</p>

<p>A practical example of compile or run time difference would be more then welcome.</p>

<p><a href="https://swift.org/migration-guide-swift3/se-0107-migrate.html#common-use-cases" rel="noreferrer">Swift Doc</a> says about <code>bindMemory(to:capacity:)</code>: </p>

<blockquote>
  <p>This API allows a region of memory to hold unrelated types at different points in the program. Binding uninitialized memory to a type prepares the memory to store values of that type. Binding memory that is already initialized reinterprets the in-memory values as the new type. If the old values are either nontrivial (require destruction) or if they are ever read from memory before being overwritten, then the new type must be mutually layout compatible with the old type.</p>
</blockquote>

<p>What does it mean <em>Binding uninitialized memory to a type prepares the memory to store values of that type</em>? It's allocated bytes, right? So what's different after <code>bindMemory(to:capacity:)</code> completes?</p>
