title: rust clone() vs Rc or Arc?
body: <p>I'm trying to understand the pros and cons between:</p>
  
  <ul>
  <li>using Arc and cloning the Arc (I'm using Something in various places/threads)</li>
  </ul>
  
  <p>vs</p>
  
  <ul>
  <li>using Something.clone() (my Something struct only has 1 field which is already cloneable)</li>
  </ul>
  
  <p>Other than measuring and comparing performance results, which I don't think any of the two would be much worse performance wise, I'm trying to understand what's considered "generally better" or "more idiomatic" in rustaceans minds.</p>
  
  <p>If I understand correctly:</p>
  
  <ul>
  <li>Arc and cloning: I have 1 Something on the heap (expensive compared to stack) + I'm cloning Arc (expensive compared to Rc.clone but needed if I need to use across threads) so I create/drop N Arcs depending on how many times I clone/drop</li>
  </ul>
  
  <p>vs </p>
  
  <ul>
  <li>Something.clone: I create/drop N instances of Something on the stack depending on how many times I clone/drop</li>
  </ul>
  
  <p>in this situation (where "Something" is cheap to create), is there any benefit of wrapping in an Arc vs just cloning it?
  is any of the two options preferable?</p>