Parse optional vert at the beginning of a match arm
diff --git a/src/expr.rs b/src/expr.rs
index eaa4ced..5dec492 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -953,6 +953,7 @@
     /// *This type is available if Syn is built with the `"full"` feature.*
     pub struct Arm {
         pub attrs: Vec<Attribute>,
+        pub leading_vert: Option<Token![|]>,
         pub pats: Punctuated<Pat, Token![|]>,
         pub guard: Option<(Token![if], Box<Expr>)>,
         pub rocket_token: Token![=>],
@@ -1931,6 +1932,7 @@
     impl Synom for Arm {
         named!(parse -> Self, do_parse!(
             attrs: many0!(Attribute::parse_outer) >>
+            leading_vert: option!(punct!(|)) >>
             pats: call!(Punctuated::parse_separated_nonempty) >>
             guard: option!(tuple!(keyword!(if), syn!(Expr))) >>
             rocket: punct!(=>) >>
@@ -1950,6 +1952,7 @@
             (Arm {
                 rocket_token: rocket,
                 attrs: attrs,
+                leading_vert: leading_vert,
                 pats: pats,
                 guard: guard.map(|(if_, guard)| (if_, Box::new(guard))),
                 body: Box::new(body.0),
@@ -3349,6 +3352,7 @@
     impl ToTokens for Arm {
         fn to_tokens(&self, tokens: &mut Tokens) {
             tokens.append_all(&self.attrs);
+            self.leading_vert.to_tokens(tokens);
             self.pats.to_tokens(tokens);
             if let Some((ref if_token, ref guard)) = self.guard {
                 if_token.to_tokens(tokens);