Thanks for pointing out these issues!
On Sat, Jun 22, 2013 at 9:26 AM, Ashish Myles <[email protected]> wrote:
> POSSIBLE ERRATA:
>
> Slide 40:
> The notes say "Change [@Drawable] to [~@Drawable]". The latter should be
> ~[@Drawable], or, to be consistent with the Slide 41, perhaps
> &[@Drawable]? Both tested to work.
>
Typo, I'm about to upload a fixed copy.
> Slide 51:
> The program seems to be missing a unique pointer sigil ~; and the types of
> the array and the initializer ("quux") don't match. Here is a possible
> correction? (Tested.)
>
> fn h(b: ~[int]) { }
> fn g(a: ~[int]) { }
> fn f(n: uint) {
> let v: ~[int] = vec::from_elem(n,1);
> h(v);
> g(v);
> }
Ditto.
>
> Slide 53:
> Perhaps the audio is needed for this slide, but I am confused. Before I
> start with that, I checked
> struct Cat {
> a : int,
> }
> fn main() {
> let v: Cat::new();
> }
> It seems that there is no default new() function, so I don't know the
> type of the object returned by Cat::new(). Is it Cat or ~Cat here?
>
> The comment about Cat not being copyable seems to imply that the type is
> Cat (i.e. stack-allocated). But then send_cat_to_moon(cat) should not be
> able to invalidate the reference, right? So there should not be a problem
> with that code as webcam should get destructed before cat at the end of
> the block.
>
> If Cat::new() returns ~Cat and Webcam::new() returns ~Webcam, then I can
> see this working out, but then there is the implicit assumption (that
> could perhaps be clarified in the comments) that send_cat_to_moon(cat)
> takes its argument as ~Cat rather than, say, &Cat.
Since this example was just meant to illustrate a potential problem,
there are several things about it that aren't valid Rust. I tried to
add more comments in the note beneath the slide explaining that. The
definitions of the constructors/static methods for WebCam and Cat are
omitted, and presumably Cat has some fields that I left out because
they're not needed for understanding the problem. In particular, Cat
could have fields that are non-copyable, even if its constructor
returns a Cat (and not a ~Cat).
Thanks for your interest!
Tim
--
Tim Chevalier * http://catamorphism.org/ * Often in error, never in doubt
"Not a riot, it's a rebellion." -- Boots Riley
"Attention Bros and Trolls: When I call out your spew, I'm not angry,
I'm defiant." -- Reg Braithwaite
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev