diff --git a/src/traft/mod.rs b/src/traft/mod.rs
index b4ba3654adc5eda52e6290bac9f679110944e0ea..db0bfb801b41a821a6bbda5dd523b960c0c89ae4 100644
--- a/src/traft/mod.rs
+++ b/src/traft/mod.rs
@@ -635,10 +635,11 @@ impl<'a> std::fmt::Display for EntryPayload<'a> {
             EntryPayload::ConfChangeV2(ccv2) => {
                 write!(f, "{:?}(", ccv2.transition)?;
                 let mut iter = ccv2.changes.iter();
-                let cc = iter.next().unwrap();
-                write!(f, "{}({})", change_type(cc.change_type), cc.node_id)?;
-                for cc in iter.take(ccv2.changes.len() - 1) {
-                    write!(f, ", {}({})", change_type(cc.change_type), cc.node_id)?;
+                if let Some(cc) = iter.next() {
+                    write!(f, "{}({})", change_type(cc.change_type), cc.node_id)?;
+                    for cc in iter.take(ccv2.changes.len() - 1) {
+                        write!(f, ", {}({})", change_type(cc.change_type), cc.node_id)?;
+                    }
                 }
                 f.write_str(")")?;
                 Ok(())