This crate exports a procedural macro:
glsl!. It enables quasiquoting by allowing you to
embed GLSL source code directly into rust via the syntax:
use TranslationUnit; use glsl; let tu: TranslationUnit = glsl!;
glsl! macro accepts the GLSL code directly. You can then write plain GLSL. Especially,
since version 0.2, the macro accepts plain GLSL pragmas (both
glsl! procedural macro resolves at compile-time to
allowing you to manipulate the GLSL AST directly. Feel free to have a look at the
glsl crate for further information.
Add the following to your dependencies in your
= "1" = "1"
Then, you currently need to have a nightly compiler and the following feature enabled:
Then, depending on which you’re using the 2018 edition or not:
extern crate glsl; extern crate glsl_quasiquote;
Special warnings and considerations
Because of the nature of the Rust tokenizer, dots (
.) at the beginning of a token is not part
of the token. For instance,
.3 is reinterpreted as
3 (two tokens). This will lead
to incorrect parsing if you try to represent the number
.3. While accepted by
glsl, this is not accepted by this crate. This limitation is
due to how Rust tokenizes input in procedural macro and is very unlikely to change.