Address or_fun_call lint
diff --git a/src/error.rs b/src/error.rs
index ddc5e62..23d7902 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -103,7 +103,7 @@
     #[cfg(feature = "printing")]
     pub fn new_spanned<T: ToTokens, U: Display>(tokens: T, message: U) -> Self {
         let mut iter = tokens.into_token_stream().into_iter();
-        let start = iter.next().map(|t| t.span()).unwrap_or(Span::call_site());
+        let start = iter.next().map(|t| t.span()).unwrap_or_else(Span::call_site);
         let end = iter.last().map(|t| t.span()).unwrap_or(start);
         Error {
             start_span: ThreadBound::new(start),
@@ -145,8 +145,8 @@
     /// [`compile_error!`]: https://doc.rust-lang.org/std/macro.compile_error.html
     /// [`parse_macro_input!`]: ../macro.parse_macro_input.html
     pub fn to_compile_error(&self) -> TokenStream {
-        let start = self.start_span.get().cloned().unwrap_or(Span::call_site());
-        let end = self.end_span.get().cloned().unwrap_or(Span::call_site());
+        let start = self.start_span.get().cloned().unwrap_or_else(Span::call_site);
+        let end = self.end_span.get().cloned().unwrap_or_else(Span::call_site);
 
         // compile_error!($message)
         TokenStream::from_iter(vec![
@@ -187,8 +187,8 @@
 
 impl Clone for Error {
     fn clone(&self) -> Self {
-        let start = self.start_span.get().cloned().unwrap_or(Span::call_site());
-        let end = self.end_span.get().cloned().unwrap_or(Span::call_site());
+        let start = self.start_span.get().cloned().unwrap_or_else(Span::call_site);
+        let end = self.end_span.get().cloned().unwrap_or_else(Span::call_site);
         Error {
             start_span: ThreadBound::new(start),
             end_span: ThreadBound::new(end),