On Sun, May 5, 2013 at 10:21 PM, NAKASHIMA, Makoto
<[email protected]> wrote:
> Hello,
>
> I'm new to this list and I enjoy programming in Rust.
>
> I have a question.
> Does rust's enum type support specifying base type?
> enum Color { RED = 0xff0000u, GREEN = 0x00ff00u, BLUE = 0x0000ffu }
>
> enum.rs:1:19: 1:28 error: mismatched types: expected `int` but found
> `uint` (expected int but found uint)
> enum.rs:1 enum Color { RED = 0xff0000u, GREEN = 0x00ff00u, BLUE =
> 0x0000ffu }
Quoting from the section of the tutorial on enums
(http://static.rust-lang.org/doc/tutorial.html#enums):
"When an enum is C-like (that is, when none of the variants have
parameters), it is possible to explicitly set the discriminator values
to a constant value:
enum Color {
Red = 0xff0000,
Green = 0x00ff00,
Blue = 0x0000ff
}"
So, in other words, what you did almost works, but you should leave
the `u` suffixes off of the base values because they should be ints,
not uints -- which is why you got the error message you got. Here's a
little example program:
fn main() {
enum Color { RED = 0xff0000, GREEN = 0x00ff00, BLUE = 0x0000ff }
print(fmt!("%d\n", BLUE as int)); // prints 255
}
Lindsey
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev