Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.



It's using this: 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)


whoa, so you can write like a DSL parser using the rust macro matcher syntax?


Essentially 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.


And then there are the Rust macros that let you write code in Lisp syntax, although I don't recall that any of them had a defmacro form…


Oh god, what have I seen


I'm sorry; I should have thought about the more sensitive readers.


rust 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


Macros 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-r...


As a lot of less-than/greater-than tokens




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: