This is a blog post that really is about C++, but with a look at how Rust does things. So, this is an interesting C++/Rust comparison for once.

  • BB_C@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    17 hours ago

    In Rust, you provide a string — that is injected to be invoked internally. In C++, we’d just provide a callable.

    This is because Rust’s attribute grammar can’t support a callable here.

    I don’t do C++ as a life choice, and thus not 100% sure what the author means here. But I have the feeling that he is wrong, on multiple levels even 😉

    • TehPers@beehaw.org
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      17 hours ago

      Correct - Rust’s attribute grammar allows any parseable sequence of tokens enclosed in #[attr ...] basically. Serde specifically requires things to be in strings, but this is not a requirement of modern Rust or modern versions of syn (if you’re comfortable writing your own parser for the meta).

      The author is not a Rust expert though, so I’m not surprised to see this assumption. It doesn’t take away from the article though.

      Edit: for fun, syn has an example parsing an attribute in an attribute