title: Why [u8] does not implement Clone?
body: <p>The example below is just an example, I know I don't need the Clone for this to work, but if <code>S</code> were an enum with <code>[T]</code> and <code>Vec&lt;T&gt;</code> and I wanted to resize the vector, <code>T</code> would have to be <code>Clone</code>.</p>
  <pre><code>struct S&lt;'a, T&gt;{
      a: &amp;'a [T]
  }
  
  impl&lt;'a, T&gt; S&lt;'a, T&gt; {
      pub fn borrow(&amp;self) -&gt; &amp;[T] 
      where [T]: Clone {
          self.a
      }
  }
  
  fn main() {
      let slice:[u8;3] = [1,2,3]; 
      let x = S{a: &amp;slice};
      x.borrow();
  }
  </code></pre>
  <p><a href="https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2018&amp;gist=6bbd77c6f48a2fb2e150994b3a9e1fad" rel="nofollow noreferrer">Playground</a></p>
  <p>Error:</p>
  <pre><code>error[E0277]: the trait bound `[u8]: Clone` is not satisfied
    --&gt; src/main.rs:17:7
     |
  17 |     x.borrow();
     |       ^^^^^^ the trait `Clone` is not implemented for `[u8]`
  </code></pre>
  <p>So, why isn't <code>[u8]</code> <code>Clone</code>?</p>