Skip to content

Instantly share code, notes, and snippets.

@huonw
Created January 15, 2014 12:42
Show Gist options
  • Star 47 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save huonw/8435502 to your computer and use it in GitHub Desktop.
Save huonw/8435502 to your computer and use it in GitHub Desktop.
do-while loops in Rust
while {
let x = foo();
bar(x);
x != 0
} {}
@jFransham
Copy link

This is an ancient thread but I thought I'd share a trick from my first rust project -- it's crazy that this still doesn't exist in stable rust (and I haven't found any mention of it in the nightly book).

macro_rules! run {
    ($x:block until $y:expr) => {{
        while {
            $x;
            !$y
            } {}
    }};
    ($x:block if_still $y:expr) => {{
        while {
            $x;
            $y
            } {}
    }};
}

Additionally, I think keyword! should be parsed seperately to keyword, so you could write this as do! while! without the compiler complaining.

(Should note that I never ended up using this macro because it was too ugly in use, so take from that what you will)

@donbright
Copy link

really helps porting javascript . thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment