On Wed, Jun 18, 2014 at 10:19 PM, Daniel Micay <danielmi...@gmail.com>
wrote:

> On 18/06/14 03:40 PM, comex wrote:
> > On Wed, Jun 18, 2014 at 1:08 PM, Gábor Lehel <glaebho...@gmail.com>
> wrote:
> >> To partially address this, once we have tracing GC, and if we manage to
> make
> >> `Gc<T>: Copy`, we should add unbounded `Integer` (as in Haskell) and
> >> `Natural` types which internally use `Gc`, and so are also `Copy`. (In
> >> exchange, they wouldn't be `Send`, but that's far less pervasive.)
> >
> > Wait, what?  Since when is sharing data between threads an uncommon use
> case?
>
> Data remaining local to the thread it was allocated in is the common
> case. That doesn't mean that sending dynamic allocations to other tasks
> or sharing dynamic allocations is bad. `Rc<T>` is inherently local to a
> thread, so it might as well be using an allocator leveraging that.
>
> > (Personally I think this more points to the unwieldiness of typing
> > .clone() for cheap and potentially frequent clones like Rc...)
>
> Either way, it doesn't make sense to make a special case for `Gc<T>`.
>
> If `copy_nonoverlapping_memory` isn't enough to move it somewhere, then
> it's not `Copy`. A special-case shouldn't be arbitrarily created for it
> without providing the same thing for user-defined types. That's exactly
> the kind of poor design that Rust has been fleeing from.
>

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.


>
>
> _______________________________________________
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
>
>
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to