<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 18, 2014 at 10:19 PM, Daniel Micay <span dir="ltr"><<a href="mailto:danielmicay@gmail.com" target="_blank">danielmicay@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On 18/06/14 03:40 PM, comex wrote:<br>
> On Wed, Jun 18, 2014 at 1:08 PM, Gábor Lehel <<a href="mailto:glaebhoerl@gmail.com">glaebhoerl@gmail.com</a>> wrote:<br>
>> To partially address this, once we have tracing GC, and if we manage to make<br>
>> `Gc<T>: Copy`, we should add unbounded `Integer` (as in Haskell) and<br>
>> `Natural` types which internally use `Gc`, and so are also `Copy`. (In<br>
>> exchange, they wouldn't be `Send`, but that's far less pervasive.)<br>
><br>
> Wait, what?  Since when is sharing data between threads an uncommon use case?<br>
<br>
</div>Data remaining local to the thread it was allocated in is the common<br>
case. That doesn't mean that sending dynamic allocations to other tasks<br>
or sharing dynamic allocations is bad. `Rc<T>` is inherently local to a<br>
thread, so it might as well be using an allocator leveraging that.<br>
<div class=""><br>
> (Personally I think this more points to the unwieldiness of typing<br>
> .clone() for cheap and potentially frequent clones like Rc...)<br>
<br>
</div>Either way, it doesn't make sense to make a special case for `Gc<T>`.<br>
<br>
If `copy_nonoverlapping_memory` isn't enough to move it somewhere, then<br>
it's not `Copy`. A special-case shouldn't be arbitrarily created for it<br>
without providing the same thing for user-defined types. That's exactly<br>
the kind of poor design that Rust has been fleeing from.<br></blockquote><div><br></div><div>I agree. Sorry if I wasn't clear: I wasn't supposing we might bend the rules for `Gc<T>`, but that `Gc<T>` might fit them.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>_______________________________________________<br>
Rust-dev mailing list<br>
<a href="mailto:Rust-dev@mozilla.org">Rust-dev@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/rust-dev" target="_blank">https://mail.mozilla.org/listinfo/rust-dev</a><br>
<br></blockquote></div><br></div></div>