4 ms·
Can anyone please tell me how the author able to use html syntax in rust? I get that there are macros, but how are html tags valid syntax? Is rust just interpr
by devxpy 6y ago
Can anyone please tell me how the author able to use html syntax in rust?
I get that there are macros, but how are html tags valid syntax? Is rust just interpreting the html content as strings?
I've only ever seen C macros, and I don't remember seeing
this kind of wizardry happening there.
- Ciantic 6y agoIt's using this: https://yew.rs/docs/concepts/html https://yew.rs/docs/concepts/html and no, just like JSX, it's not HTML strings. It's building HTML-like AST in macro. One great thing about JSX (and Yew) is that it's way more secure way to build an HTML, because you don't need to worry about escaping behaviors as much. (Sometimes you still need, like injecting inline CSS etc. but not that often)
- devxpy 6y agowhoa, so you can write like a DSL parser using the rust macro matcher syntax?
- dgb23 6y agoEssentially yes. Macros in Rust are very powerful, similar to Lisp macros (although they are naturally clunkier). As you would expect, you will find macros for HTML, JSON etc. in libraries, but there are also quite a bunch of smaller, frequent macros that simply reduce common boilerplate.
- nulptr 6y agorust allows for procedural macros (basically a function that takes a token stream and returns a token stream, and yes you can do parsing in this funciton https://doc.rust-lang.org/reference/procedural-macros.html https://doc.rust-lang.org/reference/procedural-macros.html
- deleted 6y ago[deleted]
- quarantine 6y agoAs a lot of less-than/greater-than tokens
- deleted 6y ago[deleted]
- kevincox 6y agoMacros in Rust don't need to be completely valid syntax. There are some requirements such as balanced parens and strings but the macro API is basically a token stream. The syntax requirements are just so that the compiler knows when the macro ends. https://doc.rust-lang.org/1.7.0/book/macros.html#syntactic-requirements https://doc.rust-lang.org/1.7.0/book/macros.html#syntactic-r...