Hi,

Some random questions based on playing around with Rust for a few weeks.

1. Do mutable variant types allocated in stack always occupy a fixed space
(the size of the largest possibly value) ?
   I guess it would have to be so, just wondering if there might be some
other magic going on.
   That is, e.g. what happens with the following piece of code:
     pub fn test() -> Option<float> {
       let mut r = None;
       let s = 10;              // Just some value presumably allocated
after r in stack
       r = Some(10.3f);
       r
     }

2. How to allocate a mutable managed vector dynamically?
     I can create an owned vector with:   let a = vec::from_elem(..);
     I can create a managed vector with:  let a = at_vec::from_elem(..);
   But I can't seem to figure out how to create a mutable managed vector
(apart from using a literal).
   I tried:
      let mut a = at_vec::from_elem(...);
      a[0] = 1.1;
   But the compiler didn't seem to like it.

3. Can you return stack allocated literal vectors (either using the create
directly in calling stack semantic or as a copied value type)?
   I tried:
     fn newInStack() -> [int] { [1, 2] }
   But was hit with a compile error.

4. Can you control where a result gets built from the calling side? Making
several copies of a simple
   constructor function to be able to allocate things in different places
seems a bit silly.
     fn newInStack() -> Foo { Foo(1,2) }
     fn newOwned() -> ~Foo { ~Foo(1,2) }
     fn newManaged() -> @Foo { @Foo(1,2) }
   I especially was wondering about this in the context of 'vec' and
'at_vec' and trying (and failing) to create
   a mutable managed array; and left wondering if I'd need to create a new
module 'at_mut_vec'. (And somewhere in
   the back of my head wondering, if all these modules would really be
needed or if this is an indication of a
   problem with expressiveness of the language in such cases).

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

Reply via email to