Remove unnecessary pragmas
Sort derives
Small formatting tweaks
Vec should generally be passed by-value

See https://mail.mozilla.org/pipermail/rust-dev/2014-June/010094.html
Pass self by-value to avoid explicit clones
Use Str trait
Use ToString trait to avoid separate funs
Readability tweaks
'left' should always be >= 0 as uint
Clone at the match instead of the arms
Use vec! notation
Use iterator to repeat elem
Use mutable arg