you are viewing a single comment's thread
view the rest of the comments
[–] 1 point 9 months ago (4 children)

Sorry, I love Rust but I can't really agree with you here. They only showed a macro_rules! definition, which is definitely rust syntax. Lifetime annotations are relatively common.

I will concede that loop labels are incredibly rare though.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 4 points 9 months ago (1 child)

    Loop labels are rare, but they lead to much simpler/clearer code when you need them. Consider how you would implement this kind of loop in a language without loop variables:

    'outer: while (...) {
        'inner: while (...) {
            if (...) {
                // this breaks out of the outer loop, not just the inner loop
                break 'outer;
            }
        }
    
        // some code here
    }
    

    In C/C++ you'd need to do something like

    bool condition = false;
    while (...) {
        while (...) {
            if (...) {
                condition = true;
                break;
            }
        }
        if (condition) {
            break;
        }
    
        // some code here
    }
    

    Personally, I wouldn't call it ugly, either, but that's mostly a matter of taste

  • source
  • parent
  • hideshow 1 child comment
  • [–] 0 points 9 months ago

    Well, you'd typically put the loops into a function and then do an explicit return to jump out of there. I believe, there's some use-cases where this isn't possible, which is why I'm cool with loop labels existing, but I've been coding Rust for seven years and have not needed them once...

  • source
  • parent
  • [–] 1 point 9 months ago (1 child)
  • [–] 1 point 9 months ago

    I guess I see what you mean if we want to get very technical about what a syntax extension is. But I think for the purpose of this discussion, it's reasonable to think of macro_rules! as a part of the Rust language. Practically speaking, it is syntax provided by the language team, not just users of the language who are free to extend the syntax by using macro_rules! to do so.

  • source
  • parent