On Sat, Nov 30, 2013 at 10:26 PM, Patrick Walton <[email protected]>wrote:
> On 11/30/13 1:17 PM, Patrick Walton wrote: > >> Especially since the replacement >>> convention, as seen in PR #10697, is pretty bad (namely, using ::init() >>> instead of ::new(); init() to me seems as though it should merely >>> initialize a value, not construct a new value. Heck, the old Path >>> convention of using Path(..) is better than Path::init(..)). >>> >> > Honestly, I'm not in love with `init` either. I don't find it particularly > intuitive, and alternatives are welcome. But I do think that using a sigil > for allocation and the lack of placement new are problems that needs fixing. Pretty basic question, but: what does placement new in a Rust context even mean, precisely? The very same thing as in C++? Because in C++ allocation and placement new are pretty orthogonal. If you write `new Foo`, it means: allocate memory for a Foo and run its constructor in that memory. If you write `new (foo) Foo`, it means: *don't* allocate memory, just construct a Foo directly into `foo`, which is some existing piece of memory I provide. So while `new` is the allocation operator, placement new is in fact just a funny syntax for running constructors. Which I think is confusing as heck. All of that leading up to: if these are different things, mightn't it make sense for Rust to use different syntax for them? (And if placement new in Rust is different from placement new in C++, then what's the difference?) > > > Patrick > > _______________________________________________ > Rust-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/rust-dev > -- Your ship was destroyed in a monadic eruption.
_______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
