News for hackers. Stuff that matters.
Re:Why I’m dropping Rust by ekidd on Sunday September 11, 2016 @01:54PM (#12474619)
Rust seems to be a poor match for the way the author wishes to solve this particular problem. That doesn't mean that their design is wrong, or that Rust is wrong, but it does mean that mixing the two would require rethinking parts of the design.

> So a trait can define abstract functions, but can't access any underlying fields.

In Rust, a trait is a purely abstract interface to a type. It explains how you can use that type, but it knows nothing about the implementation.

I'm not quite sure what the design goal was with the Widget type, but the closest solution is to replace the member variable in the abstract type with some kind of accessor (and to replace the magic negative font sizes with an Option):

    trait Widget {
        // ADDED: Access whatever underlying font
        // size you have stored in this type.
        fn desired_font_size(&self) -> Option<i32>;
        // ADDED: Access the theme of this object.
        fn theme(&self) -> &Theme;
        // High-level interface to get font size.
        // (With a default implementation in terms of
        // other functions on this trait.)
        fn font_size(&self) -> i32 {
            if let Some(sz) = self.desired_font_size() {
                sz
            } else {
                self.theme().get_standard_font_size()
            }
        }
    }
I'm not sure this is how I'd personally design this, but it should compile.

> What IS the idiomatic Rust way to do a cyclical directed graph?

Unfortunately, the correct idiomatic way is that you try very hard to avoid doing so. Rust is all about clear ownership, and it doesn't like circular references.

The usual solution is to put the cyclic graph code into a library, and to use pointers and about 20 lines of unsafe code. (EDIT: See below for a better solution.) It's not much different from the C++ solution.

The Servo team really wants GCed, safe pointer support in Rust, and design work is well underway. But it's going to take a while to stabilize.

GUI libraries are an interesting special case: They involve huge class hierarchies, lots of implementation inheritance, circular references, and tricky ownership. Most older OO languages were optimized for this case. Newer languages tend to favor flatter type hierarchies and far less implementation inheritance. Which means that traditional object-oriented GUI designs may be awkward.

Re:Why I’m dropping Rust by pcwalton on Sunday September 11, 2016 @01:58PM (#12474654)
> The usual solution is to put the cyclic graph code into a library, and to use pointers and about 20 lines of unsafe code. It's not much different from the C++ solution.

Well, petgraph uses vectors and indices to avoid unsafe code, and it's the most popular graph library on crates.io.

Really, the answer here is "use a graph crate on crates.io". If you don't know which one to use, the best answer is probably petgraph.

> The Servo team really wants GCed, safe pointer support in Rust, and design work is well underway. But it's going to take a while to stabilize.

We aren't going to use GC'd pointers for any of the trees except the DOM. GC is way overkill for this use case. The reason why we want GC support is not to make tree data structures: it's for integration with JavaScript.

Re:Why I’m dropping Rust by ekidd on Sunday September 11, 2016 @02:03PM (#12474671)
> Well, petgraph uses vectors and indices to avoid unsafe code, and it's the most popular graph library on crates.io.

Nice! I hadn't seen that yet, but it looks really interesting:

http://bluss.github.io/petgraph/doc/petgraph/graph/struct.Gr...

Re:Why I’m dropping Rust by chias on Sunday September 11, 2016 @02:36PM (#12474846)
Not sure if it's just me, but the ampersands at that link are displaying super weirdly on my end:

https://i.imgur.com/Bg8rejM.png

Re:Why I’m dropping Rust by iopq on Sunday September 11, 2016 @03:39PM (#12475216)
It means you have an older version of source code pro, the Rust website uses your local font instead of an invalid font name like some websites do.
Re:Why I’m dropping Rust by MaulingMonkey on Sunday September 11, 2016 @02:40PM (#12474877)
Happens here too (on Chrome 52-53.) I guess it isn't some locally corrupted font, eh?

Edit: Doesn't occur on IE 11, so it seems Chrome specific.

Re:Why I’m dropping Rust by iopq on Sunday September 11, 2016 @03:40PM (#12475219)
It's a locally corrupted copy of Source Code Pro. When I installed a new version it was resolved.
Re:Why I’m dropping Rust by TillE on Sunday September 11, 2016 @02:29PM (#12474801)
A lot of problems in Rust seem to involve replacing (smart) pointers with handles. Sometimes you really do want to do that, but it's bad if it's a necessary kludge.

Like someone else said recently, it's a problem if you can't reasonably teach a basic computer science course in Rust.

Re:Why I’m dropping Rust by ekidd on Sunday September 11, 2016 @02:45PM (#12474914)
"Safe" Rust works for almost everything in a typical CS curriculum.

But if you want to teach an operating systems course or build cyclic, pointer-based data structures, you'll usually need a modest amount of "unsafe" Rust. Using "unsafe" gives you access to real pointers, which work just like they do in any systems language.

It's just that Rust chooses to lock those features away when you don't explicitly ask for them. If you actually need "unsafe", it's no more dangerous or more difficult than writing C code.

Re:Why I’m dropping Rust by jblow on Sunday September 11, 2016 @04:59PM (#12475698)
Where did you learn CS that they didn't have lots of cyclic data structures? We had those even in our intro class at Berkeley...
Re:Why I’m dropping Rust by coldtea on Sunday September 11, 2016 @06:12PM (#12476012)
I a few universities I know, including my own, cyclic data structures are on the curriculum, but nowhere near being taught as basic or intro stuff. That would lists, queues, trees, and hash-maps.
Re:Why I’m dropping Rust by desdiv on Sunday September 11, 2016 @06:38PM (#12476095)
The regular LinkedList in Java is implemented as a doubly linked list, which is cyclic.
Re:Why I’m dropping Rust by pjmlp on Monday September 12, 2016 @02:52AM (#12477705)
When I took my degree we had one full year of data structures, Data Structures and Algorithms I & II, but they were taught on the third year (our degrees are 5 years).
Re:Why I’m dropping Rust by topspin on Monday September 12, 2016 @01:33AM (#12477404)
It occurs to me that these courses have been teaching what might (should?) be considered a naive view of memory; you show me a traditional cyclic data structure and I'll show you a concurrency bug. I suppose that's fine in 1978 when no one imagined they'd be dealing with multi-core microcontrollers, but today, when you find yourself using a "systems" language for non-toy work and you reach for a tool as sharp as a raw pointer, those naive data structures are frequently (usually?) inadequate.
Re:Why I’m dropping Rust by SamReidHughes on Monday September 12, 2016 @04:36AM (#12478062)
Cyclic data structures are in my experience very useful for concurrency. It's probably the number three good excuse for using a linked list, when you want to hold a lock for O(1) time with no shenanigans. But also, generally, anything that involves communicating information from point A to point B, and waiting on that information, involves some sort of cyclic reference between the sender and listener.
Re:Why I’m dropping Rust by jblow on Monday September 12, 2016 @10:53AM (#12480158)
I have to completely disagree ... What are you even talking about? The inability to have circular links is deeply hobbling; they arise naturally in all kinds of circumstances.
Re:Why I’m dropping Rust by pcwalton on Sunday September 11, 2016 @09:04PM (#12476552)
> A lot of problems in Rust seem to involve replacing (smart) pointers with handles. Sometimes you really do want to do that, but it's bad if it's a necessary kludge.

It's not a kludge. It's how you prove to the compiler that you're using those structures safely.

If you aren't used to programming with compiler-enforced safety, you might be tempted to call working with the safety mechanisms a "kludge". But in reality all you're doing is doing things a little differently so that the compiler can ensure safety.

Re:Why I’m dropping Rust by barrkel on Sunday September 11, 2016 @08:47PM (#12476494)
Using handles / indexes instead of pointers is a type hole and introduces similar problems of memory safety through the back door. The problems will be semantic in nature rather than more fundamental but will still be bugs.

For the article author, I'd recommend going down a virtual DOM like approach rather than traditional OO toolkit. Rust meshes a bit more closely with functional ideas than OO.

Re:Why I’m dropping Rust by lmm on Sunday September 11, 2016 @05:06PM (#12475734)
My basic CS course was taught in Standard ML. Pointers are an implementation detail for the vast majority of CS.
Re:Why I’m dropping Rust by steveklabnik on Sunday September 11, 2016 @02:39PM (#12474874)
There are already some CS courses in Rust, Penn is running another one this upcoming semester.

(It's not a basic course, but you absolutely could.)

Re:Why I’m dropping Rust by eriknstr on Sunday September 11, 2016 @08:17PM (#12476405)
CIS 198 or something else? https://cis198-2016f.github.io/

I am currently "attending" the above mentioned course by following along online. I am enjoying it very much so far. There have been three assignments so far, the first of which was to get rust installed and such. I think it would take most of the HN crowd less than a week to catch up with the course so that they can follow it for the remainder of the semester, even if they have a day job. The most experienced programmers might be able to catch up within just a few hours.

The schedule at https://cis198-2016f.github.io/schedule/ has links to the slides, lecture notes and assignments.

Re:Why I’m dropping Rust by steveklabnik on Monday September 12, 2016 @02:30AM (#12477634)
That's the one!
Re:Why I’m dropping Rust by loup-vaillant on Sunday September 11, 2016 @02:52PM (#12474958)
> GUI libraries are an interesting special case: They involve huge class hierarchies, lots of implementation inheritance, circular references, and tricky ownership.

I doubt they have to be. There are other ways to do GUI, see for instance how Light Table uses a database-like Entity Component System. https://www.youtube.com/watch?v=V1Eu9vZaDYw

Re:Why I’m dropping Rust by jerf on Sunday September 11, 2016 @04:03PM (#12475362)
I am fairly confident "someone" could write a composition-based UI. I know of no fundamental reason why that would be impossible, or even any more difficult than doing one with inheritance.

However, that does not solve the problem that all the mature existing UI widget toolkits are based on inheritance, and that causes a serious "impedance mismatch" with languages that don't have inheritance.

As I expect more languages to start privileging composition over inheritance, I also therefore expect this problem to continue to become more acute until "someone" finally solves it. However, GUI toolkits are huge and "someone" is likely to be a substantially-sized organization. The problem is going to have to become very painful before it is solved well.

Re:Why I’m dropping Rust by loup-vaillant on Sunday September 11, 2016 @04:24PM (#12475485)
Granted, current GUI toolkits are huge. On the other hand, I have worked with Qt, and this convinced me most of the complexity there was a blend of avoidable bloat and a long tail of features few people ever use (a bit like offices suites).

I'm pretty sure properly written GUI toolkits can be much smaller. As in, satisfying 90% of our needs in a couple thousand lines of code. (The remaining 10% might require heaps and heaps of code, but I'm sure it doesn't have to affect the core.)

It's only an intuition at this point (I have yet to implement my own GUI toolkit). But I have reasons to believe this intuition is right: http://www.vpri.org/pdf/tr2012001_steps.pdf

Re:Why I’m dropping Rust by jerf on Sunday September 11, 2016 @07:03PM (#12476171)
Well, I guess I ought to put this in here, rather than rewrite it :) : https://news.ycombinator.com/item?id=12410471

The "long tail" is like the long tail of Excel or Word; yeah, everybody only uses 5% of it but everybody uses a different 5%.

Re:Why I’m dropping Rust by shadowmint on Sunday September 11, 2016 @08:33PM (#12476452)

    I'm pretty sure properly written GUI toolkits can be much smaller...
Given that as far as I know, there are no examples of tiny fully-featured GUI libraries (it's all either trivial like cgui or a massive bloated mammoth like qt/wpf/android), isn't that a bit of a rich statement?

Like, I'm sure you can write a procedural generator in a handful of lines of code that spits out the full works of Shakespeare. It's probably possible, if you have the right seed and the right algorithm.

...but practically speaking, how do you actually build one?

The same goes for UI libraries; certainly it should be possible (in theory) to have a minimal beautiful GUI libraries with an excellent API; but every attempt to build one seems to have failed.

Perhaps the problem domain is actually more difficult than you're giving it credit for...

Re:Why I’m dropping Rust by loup-vaillant on Monday September 12, 2016 @12:11AM (#12477134)
vpri.org managed to squeeze a GUI toolkit and a document format and the whole compiler toolchain required for the language (including rasterization) in about 20K lines of code, and it's fast enough to run in a laptop.

I'm pretty sure we haven't explored the sheer depth of simplifications that can still be done.

Re:Why I’m dropping Rust by shadowmint on Monday September 12, 2016 @01:07AM (#12477327)
Sounds cool. Got a link?

I can't find anything on their website that seems to be that sort of thing?

Re:Why I’m dropping Rust by renox on Monday September 12, 2016 @05:33AM (#12478274)
I doubt that you'll find much.. They didn't release the code of their "crown jevel" (Frank, the 'word processor'), which makes me quite unimpressed about these year of research where the main result is a bunch of papers and demos but (nearly no) code (except for the OMeta part).
Re:Why I’m dropping Rust by loup-vaillant on Monday September 12, 2016 @01:57PM (#12482013)
I believe they did release the source code, not far from here: http://vpri.org/fonc_wiki/index.php?title=Installation_Guide (may be outdated, you may want to ask the FONC mailing list, may not work on your machine… it's a proof of concept anyway, not a hardened engineering artefact).

Their writing is here: http://vpri.org/html/writings.php

Their various reports are there (most recent first):

http://www.vpri.org/pdf/tr2012001_steps.pdf

http://www.vpri.org/pdf/tr2011004_steps11.pdf

http://www.vpri.org/pdf/tr2010004_steps10.pdf

http://www.vpri.org/pdf/tr2009016_steps09.pdf

http://www.vpri.org/pdf/tr2008004_steps08.pdf

http://www.vpri.org/pdf/tr2007008_steps.pdf

Re:Why I’m dropping Rust by renox on Thursday September 15, 2016 @09:13AM (#12505790)
Maybe the word processor is there, maybe it isn't, there isn't much documentation, I've asked the FONC mailing list..
Re:Why I’m dropping Rust by elcritch on Thursday September 15, 2016 @12:35AM (#12503440)
It's certainly a tricky endeavor, but not impossible:

- http://www.fltk.org/index.php - https://github.com/froggey/Mezzano

Then again most gui libraries end up including networking, file handling, etc...

Re:Why I’m dropping Rust by carry_bit on Sunday September 11, 2016 @06:50PM (#12476128)
You might be able to create something like React. The API would be composition-based, and the library would bottom out against an existing UI toolkit.
Re:Why I’m dropping Rust by partiallattice on Sunday September 11, 2016 @02:41PM (#12474885)
> > What IS the idiomatic Rust way to do a cyclical directed graph?

> Unfortunately, the correct idiomatic way is that you try very hard to avoid doing so. Rust is all about clear ownership, and it doesn't like circular references.

> The usual solution is to put the cyclic graph code into a library, and to use pointers and about 20 lines of unsafe code.

The point about C++ is important. Cyclic graphs are hard in any non-GC'ed language because it breaks the ownership story.

Re:Why I’m dropping Rust by Animats on Sunday September 11, 2016 @02:45PM (#12474915)
The usual solution is to put the cyclic graph code into a library, and to use pointers and about 20 lines of unsafe code.

That indicates a fundamental design flaw in the language.

Re:Why I’m dropping Rust by stouset on Sunday September 11, 2016 @03:02PM (#12475008)
In what conceivable way?

Safe Rust allows one to do an incredible amount of things whole providing strong guarantees against the sorts of problems that plague lower level languages. Since this isn't suitable for absolutely everything, we have unsafe Rust to fill in the gaps in the small areas it's needed. Unsafe Rust isn't "bad", it just doesn't provide the same guarantees as safe Rust. And if something goes wrong, you can at least narrow down your search to unsafe areas of the code.

This isn't the sign of fundamental language design flaws. It's the sign of a phenomenally well-designed language, where the downsides of seldom-needed yet powerful features are limited to only those areas where they're used.

Re:Why I’m dropping Rust by xg15 on Sunday September 11, 2016 @05:48PM (#12475908)
I'm not convinced that cyclic data structures are a feature that's exotic enough to warrant breaking the language contracts. This thread alone shows that it's a common occurrence in tree structures. There will be likely be other structures as well.

So I'd think a better way than saying "don't do that - or if you have to, you're on your own" would be to analyze use cases and see which scenarios the language can satisfy. (As another poster suggested in making "parent pointers" an explicit language feature(

Re:Why I’m dropping Rust by Animats on Sunday September 11, 2016 @06:56PM (#12476147)
Agree. The language's memory safety system needs to support more common use cases. At least:

- Back pointers. (They're not owning pointers, and they have a well defined relationship with some other pointer. The language may need some way to explicitly say that.)

- Collections where not all slots are initialized. (This requires simple proofs by induction as you grow a collection into previously allocated unused space.)

Re:Why I’m dropping Rust by stouset on Monday September 12, 2016 @02:30PM (#12482346)
You can always use std::rc::Weak if you need a cyclic data structure with weak references. That covers, I suspect, the majority of the use-cases for these type of structures.

For real, honest-to-god, cyclic data structures — just use unsafe Rust. Again, unsafe Rust isn't "bad". It's just unsafe. More care will be expected of the code to ensure that it exports a safe interface, but nothing in the language stops you from doing it. There's quite literally no loss of expressive power.

Re:Why I’m dropping Rust by Animats on Sunday September 11, 2016 @03:15PM (#12475073)
And if something goes wrong, you can at least narrow down your search to unsafe areas of the code.

No. That's only true if the unsafe code presents a completely safe interface to its callers. If the safe code opens a hole in Rust's protection system, which is very easy to do, you can now have C-type no-idea-where-it-is bugs.

Re:Why I’m dropping Rust by roblabla on Sunday September 11, 2016 @04:20PM (#12475455)
But the origin of the bug is still certainly in the unsafe areas.
Re:Why I’m dropping Rust by UtherII on Monday September 12, 2016 @02:59AM (#12477732)
Yes, the crash can come from every line of code, but the origin of the bug is in the unsafe code. That's why unsafe code has to be cleanly inspected to be sure it has a safe interface, and by reducing the dangerous area to only few lines, it is far easier to do.
Re:Why I’m dropping Rust by generic_user on Sunday September 11, 2016 @04:09PM (#12475397)
All languages have design flaws. Thats why people keep making new languages. Arguing that Rust does not have design flaws is going to arouse more skepticism then anything else.

It is not mandated that you 'must' write safe code but that you 'can' write safe code. So there really is no fundamental assurance that rust and its libraries are in fact 'safe' by Rusts own definition in any meaningful sense.

You could make the same style argument that C is a 'safe' memory language also as long as you use automatic memory management and no malloc. Of course that would be a rather disingenuous claim to make.

Re:Why I’m dropping Rust by stouset on Monday September 12, 2016 @02:25PM (#12482296)
Nobody's arguing that Rust doesn't have design flaws.

That said, people also need to understand that many such instances are not design flaw, but are instead design tradeoffs. The OP indicated that having to switch to unsafe Rust to represent a cyclic datastructure is a design flaw. My response is that it's a tradeoff that pays dividends in every other piece of code.

Can Rust improve upon the number of problems that can be solved with safe vs. unsafe Rust? Absolutely! Is it worth cordoning off a few cases that don't technically need unsafe behavior, to ensure all other Rust code performs safely? Emphatically yes.

Re:Why I’m dropping Rust by bjz_ on Sunday September 11, 2016 @05:44PM (#12475894)
> All languages have design flaws. Thats why people keep making new languages. Arguing that Rust does not have design flaws is going to arouse more skepticism then anything else.

As somebody who has used Rust since late 2012, I completely agree. It seems that most of the more sweeping claims come from those new and excited users - hopefully over time this will soften and become more reasonable. Hype is definitely something that needs to be kept in check though, as it more than often results in a back-fire.

Re:Why I’m dropping Rust by mcguire on Sunday September 11, 2016 @03:03PM (#12475013)
The fundamental flaw being the lack of a GC?
Re:Why I’m dropping Rust by aidenn0 on Sunday September 11, 2016 @05:46PM (#12475901)
You write your cyclical graph implementation many times less than the implementation is used. The majority of the code need not deal with it.
Re:Why I’m dropping Rust by AsyncAwait on Sunday September 11, 2016 @07:40PM (#12476281)
No it doesn't.

It indicates that idiomatic Rust doesn't like cyclic references and thus you must step outside safe, idiomatic Rust to do that, it really just means that every language has an idiomatic way to do things to stay on that idiomatic road and not every way of doing things fits the idioms - they're still possible but not idiomatic. Given how the ownership system works, it makes sense

You may say that that indicates a flaw in the ownership system, but it doesn't. The ownership system can do certain things, but not all of them - it's designed to prevent the majority of common memory safety violations, but if it can't prove everything. That doesn't indicate a design flaw, it indicates a system limitation, same way a GC pause it's not a design flaw, but rather a limitation of a well deigned system.

Re:Why I’m dropping Rust by oldmanjay on Sunday September 11, 2016 @02:57PM (#12474991)
Which flaw does it indicate? It seems like there is nothing about the solution that contravenes the design goals of the language.
Re:Why I’m dropping Rust by hinkley on Sunday September 11, 2016 @02:42PM (#12474888)
Given that Rust was designed by a group known for writing web browsers, how does that work out in practice, given that the DOM is a deep bidirectional graph?

UIs work routinely by the organizational principle the author is attempting. Nested groupings of related functions that often interact in small groups.

And the thing is, a pointer to your parent doesn't semantically mean an ownership relationship anyway. It s in fact an extremely clear declaration of the ownership contract because while the owner can own many things, an object in this graph can have but one owner.

Now, I'm not sure how you would encode this into a compiler, so the discussion may have to end there as being impractical to implement.

Re:Why I’m dropping Rust by mastax on Sunday September 11, 2016 @03:49PM (#12475275)
> Given that Rust was designed by a group known for writing web browsers, how does that work out in practice, given that the DOM is a deep bidirectional graph?

I believe that the JS engine has ownership over the DOM, and pointers into the DOM are GC'd by the JS engine. This is part of the motivation for adding hooks for GC's in Rust. These posts [1][2] discusses this, although I think there is a more recent one. Edit: more recent one here [4].

> Now, I'm not sure how you would encode this into a compiler, so the discussion may have to end there as being impractical to implement.

This seems like a good use case for a Weak<> pointer [3].

[1]: http://blog.pnkfx.org/blog/2015/11/10/gc-and-rust-part-1-spe... [2]: http://blog.pnkfx.org/blog/2016/01/01/gc-and-rust-part-2-roo... [3]: https://doc.rust-lang.org/std/rc/struct.Weak.html [4]: http://manishearth.github.io/blog/2016/08/18/gc-support-in-r...

Re:Why I’m dropping Rust by hinkley on Sunday September 11, 2016 @05:23PM (#12475814)
Meh. Using Weak Types for this would be circumventing the ownership system to say what you mean and maintain it by hand. Indeed I believe the Rust Language is essentially stating that you can't manage these things by hand but a computer can.

The road to hell is paved with good intentions, and I know myself and my cohort well enough that I appreciate the Rust sentiment on this subject. It was the main feature that drew my attention.

I'm wondering if this is a concrete concept that could be build into the ownership system. Logically speaking, this back pointer only exists to allow objects that are part of a Composition to reason about their environment, or be reasoned upon by an outside observer.

Maybe some of this information already exists in the language internals and you just need a function that can expose the owner of record of the object... There can only be one, right?

Re:Why I’m dropping Rust by jwatte on Sunday September 11, 2016 @07:34PM (#12476257)
Each component could have it's environment passed in when called, rather than needing a back pointer. This also simplifies unit testing!
Re:Why I’m dropping Rust by pcwalton on Sunday September 11, 2016 @09:07PM (#12476564)
The JS engine manages the life cycle of all DOM objects. Other trees such as the flow tree just use reference counting and traits.
Re:Why I’m dropping Rust by mcguire on Sunday September 11, 2016 @02:58PM (#12474994)
"The Servo team really wants GCed, safe pointer support in Rust, and design work is well underway. But it's going to take a while to stabilize."

Any details on this? GCs and finalizers don't really work well together, which is why I gave up on my cycle detector implementation.

Re:Why I’m dropping Rust by Manishearth on Sunday September 11, 2016 @03:48PM (#12475269)
http://manishearth.github.io/blog/2016/08/18/gc-support-in-r...

The reason Servo in particular would like GC hooks is because JavaScript is GCd and we want to be able to pass around Spidermonkey-managed pointers safely. We have a framework in place that does this, but proper compiler support would be nice.

Servo doesn't need to worry about finalizers because our DOM structs never have nontrivial destructors (explicit Drop impls).

The blog post throws around some ideas for dealing with the finalized problem though.

Re:Why I’m dropping Rust by Veedrac on Sunday September 11, 2016 @03:20PM (#12475097)
They want objects that can be shared with Javascript.
Re:Why I’m dropping Rust by jwatte on Sunday September 11, 2016 @07:30PM (#12476245)
The solution is to implement guis with composition and delegation rather than inheritance. It requires some ree-thinking and elbow grease, rather than just copying stale designs from 30 years ago, which may be why so many people avoid it, though.
Re:Why I’m dropping Rust by dilann on Sunday September 11, 2016 @03:11PM (#12475050)
> GUI libraries are an interesting special case

> traditional object-oriented GUI designs may be awkward

For example, Qt has moved that tricky part into a specialized language. I think that it's the way to go.

So it's okay if a low-level language is not designed to do that ancient stuff with pointers to widgets.

Re:Why I’m dropping Rust by zanny on Sunday September 11, 2016 @10:42PM (#12476859)
Also note that there are actually several QML for Rust implementations out there, and while I've only done weekend toying at least qml-rust works well.