The vgtk project started out as a side effect of one of my "must write a text editor"
phases, as many things do. It triggers a review of the state of UI development in my current
favourite language, and sometimes it triggers a ground-up attempt to construct an ad-hoc,
informally-specified, bug-ridden, slow implementation of half of Elm, when I decide the state of
the art is insufficient for my tastes. Usually, if the ground is sparsely trodden, I never get
further than building some of the developer tooling necessary to build the UI tooling I need to
build my text editor.

In this latest case, thanks to the superlative state of Rust's developer tooling—and its low level
bindings for at least one sufficiently qualified UI toolkit—I've gotten to the point where I've been
able to build UI tooling that appeals to my idea of what UI tooling should look and feel like. So
far, I've yet to build the text editor, but I've come to accept by now that it will only ever exist
as a Platonic ideal, serving only as a motivating force to get me started building more useful
things.

I'll try to introduce vgtk, idea by idea, by way of a tutorial. You'll need to have a working
knowledge of Rust to follow along. You shouldn't need to know GTK already, but you may need to
be prepared to consult GTK documentation to understand certain things fully.

This article teaches the fundamentals of parser combinators to people who are
already Rust programmers. It assumes no other knowledge, and will explain
everything that isn't directly related to Rust, as well as a few of the more
unexpected aspects of using Rust for this purpose. It will not teach you Rust if
you don't already know it, and, if so, it probably also won't teach you parser
combinators very well. If you would like to learn Rust, I recommend the book
The Rust Programming Language.