I would think: let mut ps = *Points* {xs:~[1], ys:~[1]}; let mut ps : *Points<uint>* = *Points* {xs:~[1], ys:~[1]};
In Haskell-speak, there is a different between the "type" and the "constructor", even though by convention they are given the same name. On Wed, Nov 6, 2013 at 9:46 AM, spir <denis.s...@gmail.com> wrote: > > I can write this: > struct Points {xs:~[uint], ys:~[uint]} > fn main () { > let mut ps = Points{xs:~[1u], ys:~[1u]}; > ... > } > > But I cannot write that: > struct Points<T> {xs:~[T], ys:~[T]} > fn main () { > let mut ps = Points<uint>{xs:~[1u], ys:~[1u]}; > ... > } > > In the second case, I get the error: > sparse_array.rs:106:31: 106:32 error: expected one of `; }` but found `:` > sparse_array.rs:106 let mut ps = Points<uint>{xs:~[1u], ys:~[1u]}; > ^ > > Sorry to bother you with that, I find myself unable to find the right > syntactic schema (and could not find any example in any doc online). I'm > blocked, stupidly. > > spir@ospir:~$ rust -v > rust 0.8 > host: x86_64-unknown-linux-gnu > > > Also, I have a general problem with writing struct instances with the type > apart; meaning, without any type param, I get the same error: > struct Points {xs:~[uint], ys:~[uint]} > > fn main () { > let mut ps : Points = {xs:~[1], ys:~[1]}; > ... > } > ==> > parse_array.rs:106:28: 106:29 error: expected one of `; }` but found `:` > sparse_array.rs:106 let mut ps : Points = {xs:~[1], ys:~[1]}; > ^ > > More generally, I don't know why there are 2 syntactic schemas to define > vars. I would be happy with the latter alone (despite the additional pair > of spaces) since it is more coherent and more general in allowing > temporalily uninitialised declarations. > > Denis > _______________________________________________ > 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