title: Is it possible to create an Arc<[T]> from a Vec<T>?
body: <p>To be more specific, why <a href="https://doc.rust-lang.org/std/sync/struct.Arc.html#method.from_raw" rel="noreferrer">doesn't</a> <code>Arc&lt;T&gt;</code> implement <code>from_raw</code> with a dynamically sized <code>T</code> while <code>Box&lt;T&gt;</code> <a href="https://doc.rust-lang.org/std/boxed/struct.Box.html#method.from_raw" rel="noreferrer">does</a>?</p>
  
  <pre><code>use std::sync::Arc;
  
  fn main() {
      let x = vec![1, 2, 3].into_boxed_slice();
      let y = Box::into_raw(x);
      let z = unsafe { Arc::from_raw(y) }; // ERROR
  }
  </code></pre>
  
  <p>(<a href="https://play.rust-lang.org/?gist=fa45cfcf65c1af1d41c509b0aba66704&amp;version=stable&amp;backtrace=0" rel="noreferrer">play</a>)</p>
  
  <p>As pointed out in the comments, <code>Arc::from_raw</code> <em>must</em> be used with a pointer from <code>Arc::into_raw</code>, so the above example doesn't make sense. My original question (Is it possible to create an <code>Arc&lt;[T]&gt;</code> from a <code>Vec&lt;T&gt;</code>) remains: is this possible, and if not, why?</p>