https://github.com/cyndis/qmlrs qmlrs - QtQuick bindings for Rust but , still hope qt5 binding for rust.
2014-06-12 14:25 GMT+08:00 Noam Yorav-Raphael <noamr...@gmail.com>: > Cool. I was afraid that it will be harder for the compiler to optimize > away the enum, but it seems to be doing fine. > (If it does turn out that it's harder for the compiler, I don't see a real > problem with the approach I suggested, as a runtime failure can only be > caused by a bug in the code generator, not by user code) > > > On Thu, Jun 12, 2014 at 2:13 AM, Kevin Cantu <m...@kevincantu.org> wrote: > >> Matthew Monrocq suggests this improvement, which looks even cleaner to >> use, although slightly more complicated to implement generation of: >> >> >> On Wed, Jun 11, 2014 at 11:38 AM, Matthieu Monrocq < >> matthieu.monr...@gmail.com> wrote: >> >>> [snip] >>> >>> I do like the idea of the trait, however I would rather do away with all >>> the `get_aa`: why not directly wrap the parameters ? >>> >>> enum AaBbEnum { >>> Aa(int, f64), >>> Bb(f64), >>> } >>> trait AaBb { >>> fn get(&self) -> AaBbEnum; >>> >>> } >>> >>> impl AaBb for (int, f64) { >>> fn get(&self) -> AaBbEnum { match *self { (i, f) => Aa(i, f), } } >>> } >>> >>> impl AaBb for (f64) { >>> fn get(&self) -> AaBbEnum { Bb(*self) } >>> >>> } >>> >>> fn overloaded<T: AaBb>(x: T) { >>> match x.get() { >>> Aa(i, f) => println!("got Aa: {}", (i, f)), >>> Bb(f) => println!("got Bb: {}", f), >>> >>> } >>> } >>> >>> #[main] >>> fn main() { >>> overloaded((5i, 7.3243)); // prints: got Aa: (5, 7.3243) >>> overloaded((3.5)); // prints: got Bb: 3.5 >>> } >>> >>> Now, there is no runtime failure => you cannot accidentally match on >>> `Bb` and requests `get_aa`! >>> >> >> >> >> Kevin >> >> > > _______________________________________________ > 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