use ok_or_else
diff --git a/lib/rs/src/protocol/compact.rs b/lib/rs/src/protocol/compact.rs
index 0ded14a..c542bbd 100644
--- a/lib/rs/src/protocol/compact.rs
+++ b/lib/rs/src/protocol/compact.rs
@@ -220,7 +220,7 @@
self.last_read_field_id = self
.last_read_field_id
.checked_add(field_delta as i16)
- .ok_or(crate::Error::Protocol(crate::ProtocolError {
+ .ok_or_else(|| crate::Error::Protocol(crate::ProtocolError {
kind: crate::ProtocolErrorKind::InvalidData,
message: format!(
"invalid field delta {} for last field id {}",