You can now decide between the following ways to write the event loop:

// Move window by value (this prevents you from using the window elsewhere).
for e in Events::new(window) {
    ...
}

// Use shared reference (this allows you to use the window elsewhere).
let window = RefCell::new(window);
for e in Events::new(&window) {
    ...
}

// Use current window (the window must be set as current object).
for e in Events::new(current::UseCurrent::<Window>) {
    ...
}

// Specify usage.
let window = RefCell::new(window);
let usage = current::Use(&window);
for e in Events::new(usage) {
    ...
}

This is powered by the new Piston-Current library.

To learn more, read Best coding practices with current objects