On 1/18/12 12:54 PM, Brendan Eich wrote:
Occasionally useful as a basis case, a kind of void variant?
/be
I usually write that as
enum foo {
foo(@foo);
}
Which creates a type foo that you can't actually create instances of
(unless you use unsafe::reinterpret_cast::<foo>(0) or similar in an
unsafe block).
But maybe "enum foo { /* unconstructible */ }" is better -- I've wanted
void to be easier to define. Note that OCaml lets you say "type foo;;"
for this. This is nice for interfacing with C; SpiderMonkey bindings
have stuff like:
enum JSRuntime {
JSRuntime(@JSRuntime)
}
So that I can write *JSRuntime instead of *int or whatever in C bindings.
This is of course useful for phantom types as well.
Patrick
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev