From 3f48ed36cc00ade178788183c60b9c9d971bcfe4 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 23 Jan 2021 20:18:15 -0800 Subject: [PATCH] Restore compatibility with rustc <1.31 in Borrowed identifier deserializer The implied lifetime bound on T only works on 1.31+. Older versions fail with: error[E0309]: the parameter type `T` may not live long enough --> serde/src/private/de.rs:2548:37 | 2548 | pub struct Borrowed<'de, T: ?Sized>(pub &'de T); | -- ^^^^^^^^^^ | | | help: consider adding an explicit lifetime bound `T: 'de`... | note: ...so that the reference type `&'de T` does not outlive the data it points at --> serde/src/private/de.rs:2548:37 | 2548 | pub struct Borrowed<'de, T: ?Sized>(pub &'de T); | ^^^^^^^^^^ --- serde/src/private/de.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serde/src/private/de.rs b/serde/src/private/de.rs index 0388b552..54580e96 100644 --- a/serde/src/private/de.rs +++ b/serde/src/private/de.rs @@ -2545,7 +2545,7 @@ pub trait IdentifierDeserializer<'de, E: Error> { fn from(self) -> Self::Deserializer; } -pub struct Borrowed<'de, T: ?Sized>(pub &'de T); +pub struct Borrowed<'de, T: 'de + ?Sized>(pub &'de T); impl<'de, E> IdentifierDeserializer<'de, E> for u64 where