On Sat, Feb 1, 2014 at 9:46 PM, Patrick Walton <pcwal...@mozilla.com> wrote:
> On 2/1/14 6:43 PM, Daniel Micay wrote:
>>
>> On Sat, Feb 1, 2014 at 9:27 PM, Eric Reed <ecr...@cs.washington.edu>
>> wrote:
>>>
>>>
>>> I wasn't aware of mem::size_of before, but I'm rather annoyed to find out
>>> we've started adding bare A -> B functions since it breaks parametricity.
>>> I'd much rather put size_of in a trait, at which point it's just a weaker
>>> version of Any.
>>
>>
>> You do realize how widely used size_of is, right? I don't this it
>> makes sense to say we've *started* adding this stuff when being able
>> to get the size/alignment has pretty much always been there.
>
>
> `transmute()` breaks parametricity too, which is annoying to me because you
> can get C++-template-expansion-style errors in translation time ("transmute
> called on types of different sizes"). I proposed changing it to a dynamic
> runtime failure if the types had different sizes, which eliminates ad-hoc
> templates leaking into our trait system, but that met with extremely strong
> objections from pretty much everyone.
>
> Patrick

This could be restricted to `unsafe` code by making reflection
features `unsafe` and mandating that safe functions must compile for
types meeting the bounds.

The `size_of` functionality is absolutely required to have any hope of
writing smart pointers and containers in the library, without using ~T
and ~[T] as the sole allocators.
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to