diff --git a/src/items.rs b/src/items.rs
index e6b401d2ff3..fa15eeca3ac 100644
--- a/src/items.rs
+++ b/src/items.rs
@@ -693,7 +693,7 @@ impl<'a> FmtVisitor<'a> {
         let fmt = ListFormatting {
             tactic: DefinitiveListTactic::Vertical,
             separator: ",",
-            trailing_separator: SeparatorTactic::Always,
+            trailing_separator: SeparatorTactic::from_bool(self.config.enum_trailing_comma),
             indent: self.block_indent,
             width: budget,
             ends_with_newline: true,
diff --git a/src/lists.rs b/src/lists.rs
index 8182189178a..b05e4d46066 100644
--- a/src/lists.rs
+++ b/src/lists.rs
@@ -46,6 +46,16 @@ pub enum SeparatorTactic {
 
 impl_enum_decodable!(SeparatorTactic, Always, Never, Vertical);
 
+impl SeparatorTactic {
+    pub fn from_bool(b: bool) -> SeparatorTactic {
+        if b {
+            SeparatorTactic::Always
+        } else {
+            SeparatorTactic::Never
+        }
+    }
+}
+
 pub struct ListFormatting<'a> {
     pub tactic: DefinitiveListTactic,
     pub separator: &'a str,
diff --git a/tests/source/enum-no_trailing_comma.rs b/tests/source/enum-no_trailing_comma.rs
new file mode 100644
index 00000000000..4b0347ab526
--- /dev/null
+++ b/tests/source/enum-no_trailing_comma.rs
@@ -0,0 +1,41 @@
+// rustfmt-enum_trailing_comma: false
+
+enum X {
+    A,
+    B,
+}
+
+enum Y {
+    A,
+    B
+}
+
+enum TupX {
+    A(u32),
+    B(i32, u16),
+}
+
+enum TupY {
+    A(u32),
+    B(i32, u16)
+}
+
+enum StructX {
+    A {
+        s: u16,
+    },
+    B {
+        u: u32,
+        i: i32,
+    },
+}
+
+enum StructY {
+    A {
+        s: u16,
+    },
+    B {
+        u: u32,
+        i: i32,
+    }
+}
diff --git a/tests/target/enum-no_trailing_comma.rs b/tests/target/enum-no_trailing_comma.rs
new file mode 100644
index 00000000000..4ad7d1f12d7
--- /dev/null
+++ b/tests/target/enum-no_trailing_comma.rs
@@ -0,0 +1,41 @@
+// rustfmt-enum_trailing_comma: false
+
+enum X {
+    A,
+    B
+}
+
+enum Y {
+    A,
+    B
+}
+
+enum TupX {
+    A(u32),
+    B(i32, u16)
+}
+
+enum TupY {
+    A(u32),
+    B(i32, u16)
+}
+
+enum StructX {
+    A {
+        s: u16,
+    },
+    B {
+        u: u32,
+        i: i32,
+    }
+}
+
+enum StructY {
+    A {
+        s: u16,
+    },
+    B {
+        u: u32,
+        i: i32,
+    }
+}