Re: [rust-dev] box syntax question
On 7/2/14 11:08 PM, Igor Bukanov wrote: So at some future point it would be possible to replace TypedArena_instance().alloc(X) with box(TypedArena_instance) X avoiding an extra move of X from a temporary allocated on the stack that the compiler in general cannot optimize? Yes. Under the hood, this will be implemented via return value optimization and an unboxed closure. Patrick ___ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev
Re: [rust-dev] box syntax question
So at some future point it would be possible to replace TypedArena_instance().alloc(X) with box(TypedArena_instance) X avoiding an extra move of X from a temporary allocated on the stack that the compiler in general cannot optimize? On 3 July 2014 04:39, Corey Richardson wrote: > The full syntax is: "box" ["(" EXPR ")"] EXPR > > The first expression is the "boxer", or where the result of the second > expression will be stored. GC and HEAP are special cased right now as > the only boxers, but the goal is to use a trait such that you can use > Rc, arenas, vectors, or any other arbitrary type as a boxer. > > On Wed, Jul 2, 2014 at 7:29 PM, Oscar Boykin wrote: >> Once in the tutorial, I see this syntax: >> >> >> let x = box(GC) [1i, 2, 3, 4, 5, 6, 7, 8, 9, 10]; >> >> It seems to me, that should be: box, as it feels like box is referring >> to a container type (which the default type is Box<_>, but may be Rc<_> or >> Gc<_>). >> >> What is the principle behind the current notation? What is "GC" is this >> context other than a special string that is a one-off syntax? >> -- >> Oscar Boykin :: @posco :: http://twitter.com/posco >> >> ___ >> Rust-dev mailing list >> Rust-dev@mozilla.org >> https://mail.mozilla.org/listinfo/rust-dev >> > > > > -- > http://octayn.net/ > ___ > 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
Re: [rust-dev] box syntax question
To expand upon what Corey was saying, `box` is basically a huge special-cased hack right now. I'm surprised that a mention of `box(GC)` is even included in the tutorial. Someone tell Steve to rip that out. :P We'll be clarfiying how best to use `box` before 1.0. In the meantime, just don't use GC. Like, at all. You don't need it! :) On Wed, Jul 2, 2014 at 10:39 PM, Corey Richardson wrote: > The full syntax is: "box" ["(" EXPR ")"] EXPR > > The first expression is the "boxer", or where the result of the second > expression will be stored. GC and HEAP are special cased right now as > the only boxers, but the goal is to use a trait such that you can use > Rc, arenas, vectors, or any other arbitrary type as a boxer. > > On Wed, Jul 2, 2014 at 7:29 PM, Oscar Boykin wrote: > > Once in the tutorial, I see this syntax: > > > > > > let x = box(GC) [1i, 2, 3, 4, 5, 6, 7, 8, 9, 10]; > > > > It seems to me, that should be: box, as it feels like box is > referring > > to a container type (which the default type is Box<_>, but may be Rc<_> > or > > Gc<_>). > > > > What is the principle behind the current notation? What is "GC" is this > > context other than a special string that is a one-off syntax? > > -- > > Oscar Boykin :: @posco :: http://twitter.com/posco > > > > ___ > > Rust-dev mailing list > > Rust-dev@mozilla.org > > https://mail.mozilla.org/listinfo/rust-dev > > > > > > -- > http://octayn.net/ > ___ > 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
Re: [rust-dev] box syntax question
The full syntax is: "box" ["(" EXPR ")"] EXPR The first expression is the "boxer", or where the result of the second expression will be stored. GC and HEAP are special cased right now as the only boxers, but the goal is to use a trait such that you can use Rc, arenas, vectors, or any other arbitrary type as a boxer. On Wed, Jul 2, 2014 at 7:29 PM, Oscar Boykin wrote: > Once in the tutorial, I see this syntax: > > > let x = box(GC) [1i, 2, 3, 4, 5, 6, 7, 8, 9, 10]; > > It seems to me, that should be: box, as it feels like box is referring > to a container type (which the default type is Box<_>, but may be Rc<_> or > Gc<_>). > > What is the principle behind the current notation? What is "GC" is this > context other than a special string that is a one-off syntax? > -- > Oscar Boykin :: @posco :: http://twitter.com/posco > > ___ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev > -- http://octayn.net/ ___ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev
[rust-dev] box syntax question
Once in the tutorial, I see this syntax: let x = box(GC) [1i, 2, 3, 4, 5, 6, 7, 8, 9, 10]; It seems to me, that should be: box, as it feels like box is referring to a container type (which the default type is Box<_>, but may be Rc<_> or Gc<_>). What is the principle behind the current notation? What is "GC" is this context other than a special string that is a one-off syntax? -- Oscar Boykin :: @posco :: http://twitter.com/posco ___ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev