loop as long as a value matches a certain pattern. It turns code like this:
```rust
-# let option: Option<i32> = None;
+let mut v = vec![1, 3, 5, 7, 11];
loop {
- match option {
- Some(x) => println!("{}", x),
+ match v.pop() {
+ Some(x) => println!("{}", x),
None => break,
}
}
Into code like this:
```rust
-let v: vec![1, 3, 5, 7, 11, ];
-let mut iter: v.iter();
-while let Some(x) = iter.next() {
+let mut v = vec![1, 3, 5, 7, 11];
+while let Some(x) = v.pop() {
println!("{}", x);
}
```